2013-04-23 65 views
1

我正在尋找一種方法將屬性從「this」注入到本地函數作用域中,所以我不需要編寫「this」。當引用這個屬性時。Javascript:將上下文屬性傳遞到函數範圍

具體細節顯示在此代碼http://jsfiddle.net/wwVhu/3/,看這部分

... 
    //it's how it works 
    doStuff: function(param) { $('#output').html(this.value + param) } 

    //it's how i want it work - without referencing to this 
    //doStuff: function(param) { $('#output').html(value + param) } 

我知道它可以通過包裝的功能代碼實現「與(這){...}」,但什麼是其他選擇?

在每個方法的開頭或使用js aop寫「with(this)」是我試圖避免的。

+0

通常情況下,我會說只是在'fields'定義之外添加'value',所以它的作用範圍是匿名函數(基本上它變成了一個「私有」變量)。但是,它會要求您爲變量編寫訪問器方法。但我不確定你想用你的框架實現什麼,所以我只是把它作爲一個建議來添加它。 – NilsH 2013-04-23 12:11:53

回答

0

你爲什麼要這麼做?這是命名空間,因爲它使得感知。 this對偵聽器正在偵聽的元素的引用。它包含更多的信息,而不僅僅是價值。

如果你想在另一個變量中的值,你可以這樣做:

var value = this.value 
0

基本上有四個選項:

  1. 你保持現在這個樣子。上下文和本地範圍是不同的對象,將它們結合是不好的做法並導致衝突。
  2. 將value屬性作爲第二個參數添加到doStuff函數中。
  3. 您的暱稱爲this,標識符較短。我經常發現自己使用$t
  4. 您使用with(this) $('#output').html(value + param);。這是一種不好的編碼習慣,正如1)中所解釋的那樣。你的代碼在this中有一個param屬性。