在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