2011-07-21 28 views
1

什麼是調用特定對象的方法中的屬性的方式 - 在這裏是一個例子:JavaScript對象字面 - 調用

var myObject ={ 
    firstProperty : 0, 
    secondProperty : 0, 
    myMethod : function(){ 
     // this is where I'm not quite sure 
      $(this).firstProperty = 1; 
    } 
} 

我敢肯定$(本).firstProperty = 1是錯誤的 - 但是如何在對象的方法(self,this等)內調用屬性?

回答

3

做到這一點,最好的辦法是避免使用this乾脆:

var myObject ={ 
    firstProperty : 0, 
    secondProperty : 0, 
    myMethod : function(){ 
      myObject.firstProperty = 1; 
    } 
} 

的原因是,根據上下文的this變化的意義。例如,用你的問題中的代碼,當你做document.getElementById('somelement').onclick = myObject.myMethod時會發生什麼?答案是firstProperty將改爲設置爲somelement。這同樣適用於這樣的:

var f = myObject.myMethod; 
f(); // firstProperty is now set on the window object! 
console.log(window.firstProperty); // Logs 1 to the console 

因此被警告:)

+0

我確實看到了你的觀點,但它很隱晦,不確定我是否見過某人(或需要自己)使用實例化對象的成員方法作爲DOM事件處理程序... – jondavidjohn

+0

因此,你所建議的是使用該對象的名稱甚至採用自己的方法? – user398341

+1

@ user398341是的 –

2
什麼是調用特定對象

非常混亂的方法中的屬性的方式....

我覺得另一種方式來問這個是

我如何引用屬性的一個對象,從它的一個方法中?

如果這是一個準確的方法來解釋你在找什麼,然後......

在這種情況下this將引用myObject

所以this.firstProperty應該工作。

+1

'this.firstProperty'只會只要'myMethod'上稱爲'myObject'工作。請參閱下面的答案。 –