我尝试遵循 Stephan Stoyanov 关于 JavaScript 设计模式的书。本书中的一个示例与此类似:
var MyClass = (function () {
var Constr, cnt = 0;
Constr = function () {};
Constr.id = function () {
return "myid-" + cnt;
};
Constr.prototype = {
constructor: MyClass // <-- Please, pay attention
};
return Constr;
}());
但是,当我这样使用这段代码时:
var tst = new MyClass();
console.log(tst.contructor);
我在控制台中看到 undefined
。为什么会这样?我该如何解决?
最佳答案
当您将 MyClass
分配给原型(prototype)的 .constructor
属性时,变量 MyClass
尚未初始化。在您的函数执行完成之前,它不会有值。相反,您可以只分配给它 Constr
,因为它确实有一个值,并且它们将与最终分配给 MyClass
的值相同。
var MyClass = (function () {
var Constr, cnt = 0;
Constr = function () {};
Constr.id = function () {
return "myid-" + cnt;
};
Constr.prototype = {
constructor: Constr // <-- Change to this
};
return Constr;
}());
关于javascript - 为什么我得到未定义的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35117933/