// 定義: // 宣言 // 実行: // 関数名+() // 関数定義された位置 // 場所実行機能 // 場所 // これ:実行コンテキスト、この関数に典型的に存在する、表します機能が実装されていない場合は、現在の実行コンテキスト機能は、これが唯一のこのバインドの実装後コンテンツ、機能だけではありません // 実行位置!!! // 1.デフォルトの実行:FN():この時点窓、厳格な未定義ポイントモード // 関数fn(){ // 「厳格な使用」 // はconsole.log(本) // } // のFn() // オブジェクト(実行暗黙行うことで、コンテキストオブジェクト)によって行わ2。 obj.fn():現在実行対象 // 関数fn(){ // はconsole.log(本) // } //するvar A = 10; // VAR OBJ = { // :20、 // B:FN // } // obj.b()。 // VAR OBJ2 = { // :30、 // B:obj.b // } // obj2.b()。 // VAR OBJ3 = { // :40、 // B:OBJ2 // } // obj3.bb() // 隐式丢失 // のsetTimeout(obj.b、2000)。 // 関数のsetTimeout(CB、T){ // // T // CB() // } //指定されている、すなわち、その:3.明示的(方法によって行うバインド機能)を行う 機能のFn(){ にconsole.log(本) } VARの F = fn.bind(ウィンドウ); F(); // 取得しますバックこの行方不明の暗黙的に、実際には、拘束力の明示的な実装を使用 // のsetTimeout(obj.b.bind(OBJ)、3000); // どここの機能を実行し、誰が、これはある // シーン: // 1.デフォルトの実行:指し示すモードのウィンドウ厳格で // ウィンドウ||未定義 // 2.暗黙的に実行:任意のオブジェクトによって実行される // 直接実行オブジェクト // 3.明示的に実行します。機能またはバインドすることにより実行するために電話または適用 // 誰でも書き込み // {)のFnを(機能を // console.log(本) // } // VAR OBJ = {} // obj.fn =のFn; // obj.fn(); // OBJ // VAR obtn =のdocument.getElementById( "BTN"); / / obtn.onclick =のFn; // // // obtnクリック // fn.bind( "こんにちは")(); // "こんにちは" // するvar F = fn.bind(OBJ); // F( ); OBJ // // のFn(); //ウィンドウ // 4.実行コンストラクタ(新)により実行される 機能のFn(A){ にconsole.log(本) にconsole.log(A) にconsole.log(引数) } のFn("ADMIN" ) するvar =はfn.bind( "こんにちは"、 "zhangsan" F ); F( "ルート" ) // バインド():実行した後、新しい関数を返す、新しい機能が変更されると、この古い関数のパラメータ // の1:パラメータ: // パラメータ:これは指向性を示し @ 複数のパラメータ:2種類 // パラメータ1:これは指向性を示し // パラメータ2:元のパラメータで機能します新しい機能に // ... // バインド新しいパラメータと新しい関数と一緒に渡された古いパラメータが // この時点で変更する VARを OBJ = { 名:「OBJ」 、: 表示機能{() console.log(この.nameの) } } obj.show() VAR OBJ2 = { 名: "OBJ2" } obj.show.bind(OBJ2) VaRの名= "zhangsan" ; obj.show.bind(ウィンドウ)(); // window.name =「ジョン・ドウ" // これが唯一のオブジェクトにすることができます