我试图创建对象不同的方式,并试图观察以各种方式创建的对象的原型属性。“原型”属性不适用于所有的对象创建方式
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'是一个只有函数才有的特殊属性。 –
构造函数具有原型,您可以使用Object.create创建一个(空或第二个参数)对象与传递的对象(第一个参数)作为用于查找原型链的第一个原型。更多关于这是如何工作的:http://stackoverflow.com/a/16063711/1641941 – HMR