2013-09-30 56 views
0

如何獲得cccc結果?如何在c.test()中獲得與c.test()相同的結果?

c是一個帶有子屬性和方法的obj,我想用c.method運行其他函數,比如波紋管,我怎麼讓結果和c一樣。測試()?

<script type="text/javascript"> 

function a(fn){ 
    fn(); 
} 

function b(){ 
    alert('bbbb'); 
} 

var c={ 
    name: 'cccc', 
    test: function(){ 
     alert(this.name); 
    } 
} 

a(b);  // get 'bbbb'; 
a(c.test); // get empty string, how can i get 'cccc'? 

</script> 
+0

你可以使用'c.name',而不是'this.name' '函數中的this'沒有引用'c'。 – Vandesh

回答

6

您需要確保內部c.testthisc。這是可以實現的與bind

a(c.test.bind(c)); 

注意bind不適用於IE 8或更早版本。

+0

非常好,非常感謝 –

3

問題在於函數內部的範圍。

var c={ 
    name: 'cccc', 
    test: function(){ 
     alert(c.name); 
    } 
} 

這應該爲你工作

0

你可以這樣來做:

a(function(){c.test()})

相關問題