【发布时间】:2016-01-16 13:18:09
【问题描述】:
一段时间以来,我一直使用以下函数来创建未知类的实例:
Kernel.prototype._construct = function (constr, args) {
function F() {
constr.apply(this, args); // EXCEPTION!
}
F.prototype = constr.prototype;
return new F();
};
如果我使用原型,一切正常:
function Person(name, surname) {
this.name = name;
this.surname = surname;
}
var person = Kernel._construct(Person, ["name", "surname"]); // WORKS!
但是,有些人在 node v4+ 中使用我的库,使用 ES6 本机类:
class Person {
constructor(name, surname) {
this.name = name;
this.surname = surname;
}
}
var person = Kernel._construct(Person, ["name", surname]); // EXCEPTION!
他们得到一个错误:
TypeError: Class constructors cannot be invoked without 'new'
我需要能够使用未知数量的参数调用构造函数。有关如何解决此问题的任何想法?
【问题讨论】:
-
代码中
_bind的用途是什么? -
我已经删除了,因为我正在使用 _bind 进行测试...
标签: javascript node.js oop constructor ecmascript-6