this
Javascriptでの値を設定するにはどうすればよいですか?
例えば:
var obj = {
a: 'b',
c: "d",
e: function() {
this = {
one: 1,
two: 2
};
}
};
これも可能ですか?
this
Javascriptでの値を設定するにはどうすればよいですか?
例えば:
var obj = {
a: 'b',
c: "d",
e: function() {
this = {
one: 1,
two: 2
};
}
};
これも可能ですか?
this
あなたが求めているように、JavaScript での値を明示的に割り当てることはできません。
関数の実行が開始されると、this
その正確な関数内の値は変更されません(ただし、埋め込み関数は独自の値を持つことができますthis
)。
このようなプロパティを割り当てることができるthis
ので、おそらくそれが必要です。
this.one = 1;
this.two = 2;
代わりにthis
、関数の呼び出し元によって制御され、関数がどのように呼び出されるかによってthis
、関数内に何が設定されるかが決まります。例えば:
obj.e()
this
の内部の値をに設定しe()
ますobj
。
とを使用.apply()
し.call()
て、の値をthis
包含オブジェクト以外のものに設定することもできます。
たとえば、あなたが求めたことを実行するには、次のコードを使用します。
var test = {one:1, two:2};
var obj = { a:'b', c:"d", e:function(){
// this will be set to the test object in here when called as below
}};
obj.e.call(test);
this
この特定の呼び出しの内部の値がe()
、要求されたオブジェクトに設定されます。
var obj = { a:'b', c:"d", e:function(){
// Here, this.one === 1 and this.two === 2
}.bind({ one: 1, two : 2})};
「this」は、関数本体内に設定できない予約済みのキーワードです。
apply
関数のまたはcall
メソッドを使用して、この特定の値で関数を呼び出すことができます。obj.e.call({one: 1, two: 2})
。これらの2つの関数メソッドに関するMDNの記事を調べてください。
ECMAScript 5のメソッドを使用して、関数が呼び出されるたびbind
にの値を永続的に設定することもできます。this
これはECMAScript5メソッドであるため、古いブラウザーでは機能しませんが、古いブラウザーにサポートを追加するために使用できるポリフィルがあります。
これはどう?
this.one=1;
this.two=2;