【发布时间】:2015-08-07 23:27:03
【问题描述】:
原型是一个对象,您创建的每个函数都会自动获得一个原型属性,该属性指向一个新的空白对象。此对象几乎与使用对象字面量或 Object() 构造函数创建的对象相同,只是它的构造函数属性指向您创建的函数,而不是内置的 Object()。
以上内容摘自 Stoyan Stefanov 的 JavaScript 模式书。
var Ctor = function(msg) {
this.msg = msg;
this.print = function() {
console.log(this.msg);
}
};
所以,我知道Ctor 将有一个prototype 属性,我可以访问它。要检查构造函数属性指向的位置,我可以这样做:
Ctor.prototype.constructor
如果我在控制台上执行此操作,我会得到指向 function Ctor(msg) 的指针 (?)
到目前为止,一切都很好。
现在我正在尝试通过Object()构造函数创建一个变量,并查看它的构造函数属性指向的位置:
var CtorCopy = new Object(Ctor);
CtorCopy.prototype.constructor;
现在我看到控制台上的结果是function Ctor(msg),就像之前的情况一样。
因此,这让我得出结论,通过 Object() 创建的对象的构造函数属性并不指向内置 Object() (实际上,我不确定内置 Object() 的含义)而是指向函数我创建。
这令人困惑。
【问题讨论】:
标签: javascript oop constructor