Javascript &引用;原型;属性不适用于所有对象创建方式
我试图以不同的方式创建对象,并试图观察以每种方式创建的对象的原型属性Javascript &引用;原型;属性不适用于所有对象创建方式,javascript,prototype,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(){};
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:为什么存在这种差异?原型属性不是对象的原型。这(通常)是
\uuuu proto\uuuu
属性,尽管我认为ECMAScript标准的任何版本都不需要该属性。函数的prototype
属性Foo
是将用作由new Foo()生成的对象的原型的对象prototypeprototype
是只有函数才具有的特殊属性。构造函数函数具有prototype,您可以使用object.create创建(空参数或第二个参数)对象,将传递的对象(第一个参数)作为用于查找原型链的第一个原型。更多关于如何工作的信息:虽然大多数浏览器都不推荐使用。\uuuuu proto\uuuuuu
,但我相信ES6正在添加对该属性的完全支持,作为一个神奇的(可变的)getter/setter。