this
の値がJavascriptのさまざまなシナリオにあるかどうかを判断するためにいくつかのルールを読みました。下の例が私を捨てるまで、すべてはうまくいっていました。これをJavascriptで使用する
function Person(name){
this.name = name; //this is the object when function used as constructor (as expected)
this.changeName = someFunction(); // produces error
function someFunction(){
this.nickName = this.name+"by"; //this is now the global object and not the instance, thus the name property does not exist.
}
}
var a = new Person ('bob'); //error due to the function in changeName property.
私は理解したものから、this
変数は、ドット表記法を介して呼び出されたときに呼び出し元オブジェクトの値を取るか、new
キーワードと共に使用した場合、新たに構築関数の値をとります。
誰かが、上記の関数内のこのステートメントが、グローバルobjetであり、新しくインスタンス化されたオブジェクトではない理由を説明することができますか?
なぜ私の実装が間違っているのか答えます。ありがとうございました。内部のグローバルオブジェクトであることを認識した時点で私はすでにcall()関数を使用していましたが、なぜそれがグローバルオブジェクトであるのかを知る理由が必要でした。これは私が探していた説明(Y)です。 – alaboudi