“原型”属性不适用于所有对象创建方式

时间:2014-02-18 07:49:19

标签: javascript 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:为什么存在这种差异?

1 个答案:

答案 0 :(得分:2)

prototype属性不是对象的原型。那是(通常)__proto__属性,虽然我不认为任何版本的ECMAScript标准都要求该属性。函数prototype的{​​{1}}属性是将用作Foo生成的对象的原型的对象。