1. ホーム
  2. javascript

[解決済み] this "変数を簡単に設定できますか?

2022-05-13 04:18:52

質問

私はJavascriptをかなり理解していますが、変数 "this"を設定する良い方法を見つけることができません。 考えてみてください。

var myFunction = function(){
    alert(this.foo_variable);
}

var someObj = document.body; //using body as example object
someObj.foo_variable = "hi"; //set foo_variable so it alerts

var old_fn = someObj.fn;   //store old value
someObj.fn = myFunction;   //bind to someObj so "this" keyword works
someObj.fn();              
someObj.fn = old_fn;       //restore old value

最後の4行を省いてやる方法はないでしょうか? むしろ迷惑です...。 無名関数をバインドしてみましたが、これは美しく賢い方法だと思いましたが、無駄でした。

var myFunction = function(){
    alert(this.foo_variable);
}

var someObj = document.body;        //using body as example object
someObj.foo_variable = "hi";        //set foo_variable so it alerts
someObj.(function(){ fn(); })();    //fail.

明らかに、変数をmyFunctionに渡すことは選択肢の一つですが...それはこの質問のポイントではありません。

ありがとうございます。

どのように解決するのですか?

JavaScriptのすべての関数には、2つのメソッドが定義されています。 call() apply() . 関数の構文は次のようになります。

call( /* object */, /* arguments... */ );
apply(/* object */, /* arguments[] */);

これらの関数が行うことは、呼び出された関数を呼び出すことであり、その関数の値として オブジェクト パラメータに この .

var myFunction = function(){
    alert(this.foo_variable);
}
myFunction.call( document.body );