JavaScript でコンストラクター関数呼び出しを使用すると、関数内の this 変数/キーワードが新しいオブジェクトにバインドされ、バインドされたすべての「this」値を持つオブジェクトが返されることを読みました。
例えば:
function Person() {
this.name = "bob";
this.age = 33;
}
var person = new Person(); // person object with name property of "bob" and age property of 33
このようなことをすると、同じ結果が発生します。
function Person() {
var localVar = "test",
fake = "fake";
this.name = "bob";
this.age = 33;
}
var person = new Person(); // person object with name property of "bob" and age property of 33 regardless of the local variables declared inside
ただし、このようなことをすると、自分自身で宣言された変数/プロパティがオブジェクトに返されます
function Person() {
var self = this;
self.phone = "123-123-1222";
self.career = "programmer";
this.name = "bob";
this.age = 33;
}
var person = new Person(); // person object with name property of "bob" and age property of 33, phone of "123-123-1222" and career of "programmer"
最後の例では、実際の「this」キーワードではなく、this のローカル変数に 2 つがバインドされているにもかかわらず、インタープリターは 4 つのプロパティすべてを返すことをどのように認識しますか。