2010-01-05 101 views
1

快速的問題,我還沒有自己的工作。我將從一個例子開始。Javascript對象:從方法訪問對象變量

object = { 
    somevariable: true, 
    someothervariable:31, 
    somefunction: function(input){ 
     if (somevariable === true){ 
      return someothervariable+input; 
     } 
    } 
} 

object.somefunction(3); 

顯然這是行不通的。我是否必須說object.somevariableobject.someothervariable或者是否有引用屬於本地對象一部分的變量的方法,而不明確地引用對象?

感謝

Gausie

回答

5

使用特殊關鍵字this,它指的是對象的函數被調用於:

var thing = { 
    somevariable: true, 
    someothervariable:31, 
    somefunction: function(input){ 
     if (this.somevariable === true){ 
      return this.someothervariable+input; 
     } 
    } 
} 
thing.somefunction(3); 

var otherThing = { 
    somevariable: true, 
    someothervariable:'foo', 
    amethod: thing.somefunction 
}; 
otherThing.amethod('bar'); 

小心使用,如 「對象」 變量名。 JS是區分大小寫的,因此它不會與內部的Object相沖突,但是您可能會在其他語言中遇到麻煩。

+0

這似乎很明顯,爲什麼我不試試? – Gausie 2010-01-05 15:31:31

+0

當然,這隻能在函數內部工作......如果你有像var o = {a:1,b:this.a}那樣的行爲;這肯定不會起作用 – 2011-01-18 22:06:59

1

當添加「這個」它適用於我。

var o = { 
    somevariable: true, 
    someothervariable:31, 
    somefunction: function(input){ 
     if (this.somevariable === true){ 
      return this.someothervariable+input; 
     } 
    } 
} 

alert(o.somefunction(3));