prototype属性[[prototype]] vs函数中的prototype属性?

时间:2014-06-07 12:10:56

标签: javascript function prototype

我已经阅读了大部分关于javascripts原型的材料,并了解了大部分内容,只剩下一个疑问:

这里是代码:

function foo(){};
foo.prop = 'value';
foo.prototype.prop1 = function(){};
foo.prototype.prop2 = 'value2';

现在这里有两个原型,如果我没有错误,原型attr([[prototype]]指向Function.prototype)和

函数的prototype属性(我在上面访问过)。此外,如果我实例化新对象(var bar = new foo()),其[[prototype]]将指向foo.prototype(或bar.constructor.prototype === foo.prototype)。

我的问题是当我们尝试访问变量时,js首先搜索对象自己的属性,然后转到原型,然后是原型的原型(直到Object.prototype)。

但是在foo()的情况下,我们在这里有两个原型([[prototype]],其中foo inherts和原型来自obejct实例化的新foo()继承),

所以我写的时候:

1.) foo.prop --> it search the objects props, finds and returns,
2.) foo.prop1 --> it searches for object properties doesn't find it, searches foo.prototype finds and returns it,
3.) foo.toString() --> same as above && searches [[prototype]] and returns it.

所以有人解释发生了什么,js搜索原型属性然后[[prototype]]在上面的情况下,或者我错在哪里也是我对原型的解释正确

    foo

prop
prototype ------------------> prop1,prop2
[[prototype]] ----------------> Function.prototype

0 个答案:

没有答案