| // 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); |