2015-05-12 41 views
1

對於回調accesing「這」一parrent的,我們主要使用兩種常見模式:的參數模式(一個新的想法與綁定與自我/該模式)

(1) - 的是(自我,我..)模式

this.something = "hello"; 
var that = this; 

var callback = function(){ 
    console.log(that.something); // hello 
}; 

callback(); 

(第2) - 綁定模式

this.something = "hello"; 

var callback = function(){ 
    console.log(this.something); // hello 
}.bind(this); 

callback(); 



..但今天我已經想通了,我們實際上還可以使用與參數的模式,那就是清潔,compatibile和工作,以及:

this.something = "hello"; 

var callback = function(self){ 
    console.log(self.something); // hello 
}; 

(callback)(this); 

的優勢是顯而易見的:
- 無需進行過多inheritation
- 很簡單的語法和可讀性
- 兼容性(與像IE6瀏覽器)
- 有些功能法(這是唯一參數)


,你對此怎麼看?

+3

SO不是基於輿論的問題。 'callback.call(this)'似乎是一個更好的方法來做同樣的事情。 – joews

+0

一切都是一種看法。在過去的10年中,我還沒有看到過這種通用和完美的解決方案;) –

回答

0

你可以得到這個模式的優點,但卻沒有一個Python風格self參數:

this.something = "hello"; 

var callback = function() { 
    console.log(this.something); // hello 
}; 

callback.call(this); 
相關問題