2009-07-08 59 views
0

我有當創建JavaScript對象的問題, 當一個函數的對象中調用另一個函數,我們需要使用「這」JavaScript的面向對象的函數調用初學者的問題

MyObject = function() { 

    this.function_one = function(param) { 
     return param + param; 
    }; 

    this.function_two = function(param) { 
     return this.function_one(param) * this.function_one(param); 
     // when invoking function_one, do i need to use 'this' ???? 
    }; 

} 

回答

2

在這種情況下,是。這是因爲您將匿名函數指定爲新構建對象的屬性,這是訪問它的唯一方法。

有可能讓這個thisthis.function_two要求:

// Inside the MyObject constructor: 
    function function_one(param) { 
     return param + param; 
    } 
    // Optional, if you don't care about being able to call 
    // function_one from outside the closure 
    this.function_one = function_one; 

這就使function_one可通過調用構造函數創建的閉包內的變量;儘管可以通過兩種不同的方式(通過自由變量和對象屬性)來調用函數,但這並不是一個非常常見的習慣用法。

我建議你閱讀this article by Crockford,以便更好地理解可以將方法附加到對象的不同方式。

+0

wow..thanks快速回復,我嘗試做谷歌的搜索,但我不`噸知道我應該搜索什麼關鍵詞?非常感謝。 – jojo 2009-07-08 05:24:56

0

是的,不像的Java/C#/ C++,您必須對您指定此