私は、関数/メソッド呼び出しのコンテキストを変更するメソッド、apply、bind、callの使い方を知っています。私の質問は、これは、関数/メソッドが既にそのコンテキストを設定しているかどうかをチェックする方法はありますか?JavaScript関数/メソッドのコンテキストチェック
// given
var beta;
function alpha() {
return this;
}
function isContextSet (fn) {
/* check for context binding on fn */
}
beta = alpha.bind("hello");
isContextSet(alpha); // returns false
isContextSet(beta); // returns true
私は、私はすでにこの答えを知っていると思いますが、私はもし超えない他の理由のために、とにかく求めるだろうと思った:1.私の仮定を確認する、または2は何かを学びます。私はこの質問を最初にしたのではないことを確信していますが、実際に答えを見つける方法についてはわかりませんでした。私が得るのは、.apply()、.call()、または。バインド()。何ができるか
おそらく、これは役に立ちます:[どのようなオブジェクトのjavascript関数が(この "this"とは何ですか?)](http://stackoverflow.com/q/14307264/218196)。 –
_ "は既にコンテキスト設定を持っています" _ "既に"という意味ですか?関数が呼び出されるたびに '.apply()'、 '.call()'および '.bind()'は 'this'を永久に設定しません(' .bind() 'は_new_特定の 'this 'を持っていますが、_original_関数を実際には変更しません)。すべての可能な方法で関数を呼び出す方法は 'this'を_something_に設定します - 暗黙的に行う方法と明示的に行う方法です... – nnnnnn
私は何を得ようとしているのかを示すコードをいくつか追加しました。私は3つのメソッドがどのように動作するのか理解しており、呼び出しの本体の中で関数/メソッドのコンテキストをチェックする方法を知っています。上記のように、呼び出しの外からコンテキストをチェックするにはどうすればよいですか?私はJSでそれをする方法を考えることはできません。 – kalisjoshua