"prototype"属性不适用于所有对象创建方式



>我试图以不同的方式创建对象,并试图观察以每种方式创建的对象的原型属性。

var a = {a: 1}; 
//The prototype chain as mentioned in [here][1]
// a ---> Object.prototype ---> null

现在,我观察到a.prototype是未定义的。问题1:如果它未定义,那么原型链是如何形成的?a.hasOwnProperty的存在是因为原型链。

现在如果我说:

var myFunc = function(){};
// Prototype chain: myFunc ---> Function.prototype ---> Object.prototype ---> null

对于这种创建方式,myFunc.prototype 存在。

问题2:为什么存在这种差异?

prototype 属性不是对象的原型。这是(通常)__proto__属性,尽管我认为任何版本的 ECMAScript 标准都不需要该属性。函数Fooprototype属性是将用作由 new Foo() 生成的对象的原型的对象。

最新更新