Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;原型;属性不适用于所有对象创建方式_Javascript_Prototype - Fatal编程技术网

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()生成的对象的原型的对象
prototype

prototype
是只有函数才具有的特殊属性。构造函数函数具有prototype,您可以使用object.create创建(空参数或第二个参数)对象,将传递的对象(第一个参数)作为用于查找原型链的第一个原型。更多关于如何工作的信息:虽然大多数浏览器都不推荐使用
。\uuuuu proto\uuuuuu
,但我相信ES6正在添加对该属性的完全支持,作为一个神奇的(可变的)getter/setter。