2012-09-24 32 views

回答

3

AFAIK原型访问基本上只有2个正常访问(除了访问原型是高度优化的)。写this.test是基本相同的书写

if(this.hasOwnProperty('test')) { return test; } 
else { return this.constructor.prototype['test']; } 

虽然,我不知道这100%。

+0

所以我应该明白,在使用非原型对象时,hasOwnProperty函数根本不会被调用? –

+0

嗯,在内部它可能从未被调用,并且可能存在几层缓存(我不知道如何工作)来加速所有内容。另外,我认为(当我回答时,我忘记了),当你访问一个原型值时,值被复制到所讨论的对象中,尽管我不确定这一点......但是,如果你忽略缓存(可能或可能不存在),你总是必须检查'hasOwnProperty',导致你怎么知道要返回什么?重要的是要记住的是,原型查找以同样的方式工作(new'hasOwnProperty')。 – Alxandr

+0

好吧,如果我有足够的声望,我会鼓励你;) –

相关问题