Rumah  >  Soal Jawab  >  teks badan

javascript - masalah penunjuk ini dalam kaedah prototaip lanjutan js

Dalam buku JavaScript Ninja Secrets, terdapat perpustakaan prototaip dan contoh kod ikatan fungsi:

Function.prototype.bind = function(){
            var fn = this, args = Array.prototype.slice.call(arguments),
                object = args.shift();
            return function(){
                  return fn.apply(object,args.concat(Array.prototype.slice.call(arguments)));
            };
        }; 
            var myObject = {a:"1"};
            function myFunction(){
                return this == myObject;
            };
            var aFunction = myFunction.bind(myObject);

            aFunction();

Saya menggunakan titik putus untuk menyemak fungsibind里面的fn指向myFunction这个函数 这个我不太理解 我的理解是只要用Function.prototype 这个原型扩展的方法 此方法里面开始声明的变量var fn=this;fn的指向就指向使用这个方法的函数 就像本例中的myFunction.bind(myObject);调用bin方法,fn指向myFunctionFungsi ini, saya tidak tahu sama ada ini cara yang betul untuk memahaminya

漂亮男人漂亮男人2683 hari yang lalu700

membalas semua(1)saya akan balas

  • 迷茫

    迷茫2017-05-19 10:38:17

    Sebenarnya, saya tidak begitu memahami soalan anda, jadi mari kita lihat kod dengan idea

    myFunction.bind(myObject) memasuki fungsi bind prototaip

    1. Tugaskan myFunction kepada fn, tukar parameter kepada args tatasusunan, padam parameter pertama dan tetapkan ia kepada objek.

    2. Kembalikan fungsi, kemudian fikirkan tentang penutupan, dan kemudian anda akan faham. Kerja yang dilakukan oleh fungsi ini boleh difahami dengan mudah sebagai myFunction.apply(myObject,[...di sini adalah parameter lain])

    aFungsi()

    Ia adalah myFunction.apply(myObject,[...tidak ada parameter di sini])
    Kemudian masukkan bahagian dalam myFunction, kerana hubungan antara apply, ini adalah myObject, dan kemudian kerjanya ialah myObject==myObject
    Return benar

    balas
    0
  • Batalbalas