0

JavaScript オブジェクトを作成するときに質問がありました。ある関数がオブジェクト内の別の関数を呼び出す場合、'this' を使用する必要がありますか?

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' ????
    };

}
4

2 に答える 2

2

この状況では、はい。これは、無名関数を新しく構築されたオブジェクトのプロパティに割り当てるためです。これが、それにアクセスする唯一の方法です。

thisで必要としないようにすることは可能ですthis.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 つの異なる方法で関数を呼び出せるようにすることは、あまり一般的な慣用句ではありません。

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

于 2009-07-08T05:23:54.147 に答える
0

はい、Java/C#/C++ とは異なり、これを指定する必要があります

于 2009-07-08T05:24:58.390 に答える