ホームページ >ウェブフロントエンド >jsチュートリアル >この例の詳細な説明と動作原理については、JavaScript_基礎知識で学習してください。
仕組み
関数がオブジェクトのメソッドとして呼び出された場合、これはオブジェクトに割り当てられます。
この動作は非常に「脆弱」であることに注意してください。メソッドへの参照を取得して呼び出すと、この値は親ではなくウィンドウ グローバル オブジェクトになります。これはほとんどの開発者を混乱させます。
.call、.apply、.bind メソッドは、関数を呼び出すメソッドを操作するために使用され、この値と関数に渡されるパラメーター値を定義するのに役立ちます。
Function.prototype.call には任意の数のパラメーターを含めることができ、最初のパラメーターがこれに割り当てられ、残りは呼び出し元の関数に渡されます。
Function.prototype.bind は、.bind に渡されたパラメータを常に this の値として使用する特別な関数を作成し、いくつかのパラメータを割り当てて元の関数のカリー化されたバージョンを作成できます。
次の例では、これはスコープ チェーン内で変更されません。これはルールの欠陥であり、アマチュア開発者に混乱を引き起こすことがよくあります。
一般的な方法は、ローカル変数を作成してこれへの参照を保持することですが、子スコープ内に同じ名前の変数を存在させることはできません。子スコープ内の同じ名前の変数は、親スコープ内のこれへの参照を上書きします。 http://www.cnblogs.com/sosoft/
何らかの不可解な理由により、親スコープの this と現在の this 値の両方を実際に使用したい場合を除き、私は .bind 関数を使用することを好みます。これを使用して、これを親スコープから子スコープに割り当てることができます。