2014-09-29 182 views
1

假設,我們有下面的代碼:jQuery的:使用這個內部類的內部功能,工作作爲處理

HTML:

<input type="button" id="button" value="Say hello"> 

的Javascript:

function test() 
{ 
    this.message = "hello"; 
    this.on_change = function(){ 
     alert(this.message); 
    } 

    this.on_change(); 
} 

$(document).ready(function() { 
    var my_object = new test(); 
    $('#button').click(my_object.on_change); 
}); 

my_object必須打印「Hello 「在2種情況下:

  1. 當我nstance創建(作品)
  2. 當點擊按鈕「打招呼」(不工作)

在它打印「未定義」第二種情況,因爲this指的是「按鈕」的對象,而不是到test類的實例。

jsfiddle

+0

創建'this'的上下文:http://jsfiddle.net/s81v1s8h/1/ – tymeJV 2014-09-29 15:49:57

+0

1)。 '$('#button')。click($。proxy(my_object.on_change,my_object));'2)。 '$('#button')。click(my_object.on_change.bind(my_object));' 3)。 '('#button')。click(function(){my_object.on_change();});' – dfsq 2014-09-29 15:56:43

回答

0

嘗試記住的this方面的一些變量:

var self = this; 
this.message = "hello"; 
... 

jsFiddle

0

好像在哪裏,你應該真正爲您處理功能的案件之一。 :)

$(document).ready(function() { 
    var my_object = new test(); 
    $('#button').click(function(){ 
     my_object.on_change(); 
    }); 
});