mirror of https://github.com/lukechilds/node.git
Browse Source
Utility function for wrapping an ES6 class with a constructor function that does not require the new keyword PR-URL: https://github.com/nodejs/node/pull/11391 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Sam Roberts <vieuxtech@gmail.com>v6
James M Snell
8 years ago
2 changed files with 51 additions and 0 deletions
@ -0,0 +1,31 @@ |
|||
// Flags: --expose-internals
|
|||
'use strict'; |
|||
|
|||
require('../common'); |
|||
const assert = require('assert'); |
|||
const util = require('internal/util'); |
|||
|
|||
const createClassWrapper = util.createClassWrapper; |
|||
|
|||
class A { |
|||
constructor(a, b, c) { |
|||
this.a = a; |
|||
this.b = b; |
|||
this.c = c; |
|||
} |
|||
} |
|||
|
|||
const B = createClassWrapper(A); |
|||
|
|||
assert.strictEqual(typeof B, 'function'); |
|||
assert(B(1, 2, 3) instanceof B); |
|||
assert(B(1, 2, 3) instanceof A); |
|||
assert(new B(1, 2, 3) instanceof B); |
|||
assert(new B(1, 2, 3) instanceof A); |
|||
assert.strictEqual(B.name, A.name); |
|||
assert.strictEqual(B.length, A.length); |
|||
|
|||
const b = new B(1, 2, 3); |
|||
assert.strictEqual(b.a, 1); |
|||
assert.strictEqual(b.b, 2); |
|||
assert.strictEqual(b.c, 3); |
Loading…
Reference in new issue