2009-07-08 14 views
0

を呼び出す私は、質問1つの関数はオブジェクト内の別の関数を呼び出すときに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は、コンストラクタを呼び出すことによって作成されたクロージャ内の変数として利用可能であるように。これは、それを作ります。 2つの異なる方法(自由変数とオブジェクトプロパティを介して)を呼び出すことができる関数を作ることは、非常に一般的なイディオムではありません。

オブジェクトにメソッドをアタッチするさまざまな方法をよりよく理解するために、this article by Crockfordを読むことをお勧めします。

+0

wow..thanksを指定する必要があります++のJava/C#の/ Cとは違って、私は、Google検索をしようが、私は、キー何の単語を検索する必要があります知っている 'tを...どうもありがとう。 – jojo

0

はい、あなたはあなたの迅速な応答のために、この