2013-09-30 51 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()})

相关问题