在JavaScript中,我们假设我想从bObj中调用aObj.myMethod()。在我的应用程序中,从设计角度来看,aObj是bObj的基类。 JavaScript是一种晚期绑定语言,这意味着myMethod应该在运行时解决。是函数解析更快通过原型或直接引用可以更快地调用JavaScript函数吗?
////////// IF
1 - 我与我的设计自然地去说bObj.prototype = aObj,然后在运行时我叫bObj.myMethod:
function bObj(){...};
bObj.prototype=aObj;
//later
var myBObj=new bObj();
myBObj.myMethod();
////////////////////////
OR
2-功能分辨率可以通过原型慢,所以我保持aObj作为bObj中的一个属性,并从bObj中调用aObj.myMethod()
function bObj()
{
this.myAObj=new aObj();
...
}
//later:
var myBObj=new bObj();
myBObj.myAObj.myMethod();
我主要关心的是执行速度。在我的应用程序中,myMethod每秒被调用数百万次。我知道大多数浏览器缓存指向最近调用函数的指针,所以在这两种情况下,函数解析过程都会加速。然而,任何人都可以在这两种情况下提供关于函数解析机制的更多细节,并让我们了解哪种方法可能会更快?所有浏览器的解析机制是否相同,或者完全依赖于浏览器?
*每秒*的百万倍* *?哇,这真是太棒了! – 2011-04-05 00:15:30
您是否尝试过在不同浏览器中分析这两种方式? – Cameron 2011-04-05 00:22:37
您可以在http://jsperf.com/上设置您的两个场景并自行测试 – 2011-04-05 00:23:39