2

次のコード スニペットをご覧ください。

Foo() {}
var bar = new Foo(); /* uses Foo as constructor for new object */

ここで、プロパティ x をオブジェクトに追加し、その値を 2 に割り当てる関数を作成します。

function addX() {
this.x = 2;
}

私の質問は、なぜこれが x プロパティを bar オブジェクトに追加することに成功しないのかということです:

addX(bar);

これは次のことを行います:

addX.apply(bar);

彼らは同じことをすべきではありませんか?

私は言語と一般的な OOP をよりよく理解しようとしているジュニア JavaScript プログラマーです。対応する実際の例はありません。つまり、私は現在プロジェクトの途中ではありません。オブジェクトでできることとできないことを学んでいて、その理由を理解しようとしています。

4

3 に答える 3

0

addX メソッドを次のように変更します。以前のメソッドを呼び出しても、コンテキストがパラメーターとして渡されません。

function addX(barx) {
barx.x = 2;
}
于 2013-09-08T19:06:33.900 に答える
0

すべての関数には、特別な「this」オブジェクトがあります。関数が呼び出されると、関数が動作しているコンテキスト オブジェクトへの参照である this 値が設定されます (関数が Web ページのグローバル スコープで呼び出されると、この this オブジェクトは window オブジェクトを指します)。関数の apply() メソッドは、特定の this 値で関数を呼び出すために使用されます。'bar' 引数を指定して apply メソッドを指定して関数を呼び出すと、関数の this 値が bar オブジェクトに設定されます。

于 2013-09-08T19:12:20.273 に答える