2014-09-30 125 views
0

我正在使用Canvas和KineticJS處理項目。我加載/創建多個節點和邊,並且在各種情況下與這些節點和邊進行交互時具有所需的功能。使用匿名函數將事件綁定到KineticJS對象

此刻,我將事件處理程序綁定到這些對象,因爲它們是使用匿名函數創建的。事情是這樣的:

Node.prototype.setupNode = function(x, y) { 

    this.visual.on('tap', function(e) { 
     console.log(this.id); 
    }); 

    ... 
} 

如果我有兩個事件結合每個項目,其中有一些是相當數量的代碼行,而且我經常結合幾百個節點和邊緣對象,是否有更好的方法將這些事件綁定到這些對象,以便我可以提高性能並減少加載時間和資源使用情況?

在此先感謝您提供任何幫助。

回答

0

您可以創建一個名爲函數,然後通過它的參考事件綁定功能,像這樣:

function handleTap (e) { 
    //your code 
} 

Node.prototype.setupNode = function(x, y) { 
    this.visual.on('tap', handleTap); 
    ... 
} 
+0

如果我創建功能handleTap()的Node.prototype.setupNode函數,而不是外面裏面,它是否會消耗更多的資源(通過在每次調用setupNode時構造)? – 2014-10-01 21:21:09

+0

JS引擎做了很多工作來優化代碼。所以,我猜測JS解釋器將會盡可能地進行這樣的優化。但是,不用依賴代碼優化器,就可以儘可能多地優化代碼。 – 2014-10-02 22:20:27