访问对象的Javascript性能';如果对象是原型对象,并且是从文本创建的,则为s字段

访问对象的Javascript性能';如果对象是原型对象,并且是从文本创建的,则为s字段,javascript,performance,prototype,object-literal,Javascript,Performance,Prototype,Object Literal,我可以使用prototype创建对象,字段在构造函数中设置,或者我可以使用JSON创建对象。我希望原型版本会和文本一样快,或者更快,但在chrome和ff上速度较慢,而在Opera上两者似乎是相等的 有人能解释一下吗?对AFAIK原型的访问基本上只是2次正常访问(除了对原型的访问是高度优化的)。编写这个测试与编写基本相同 if(this.hasOwnProperty('test')) { return test; } else { return this.constructor.prototy

我可以使用prototype创建对象,字段在构造函数中设置,或者我可以使用JSON创建对象。我希望原型版本会和文本一样快,或者更快,但在chrome和ff上速度较慢,而在Opera上两者似乎是相等的


有人能解释一下吗?

对AFAIK原型的访问基本上只是2次正常访问(除了对原型的访问是高度优化的)。编写
这个测试与编写基本相同

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

不过,我不是100%确定这一点。

所以我应该理解,当使用非原型对象时,hasOwnProperty函数根本不被调用?好吧,从技术上讲,它可能从未被调用过,而且可能有几层缓存(我不知道如何工作)来加速一切。另外,我认为(我在回答时忘记了这一点)当你访问一个原型值时,该值会被复制到所讨论的对象,尽管我不确定这一点。。。但是,如果忽略缓存(可能存在也可能不存在),则必须始终检查
hasOwnProperty
,否则您怎么知道要返回什么?需要记住的是原型查找的工作方式是相同的(new
hasOwnProperty
)。