Rumah > hujung hadapan web > tutorial js > Menggunakan fungsi kari untuk melaksanakan kaedah bind dalam kemahiran javascript_javascript

Menggunakan fungsi kari untuk melaksanakan kaedah bind dalam kemahiran javascript_javascript

WBOY
Lepaskan: 2016-05-16 15:03:09
asal
1199 orang telah melayarinya

Idea fungsi Ke Lihua: Idea pra-pemprosesan js; menggunakan prinsip pelaksanaan fungsi untuk membentuk skop yang tidak dimusnahkan, simpan semua kandungan yang perlu dipra- diproses dalam skop yang tidak dimusnahkan ini, dan mengembalikan fungsi kecil Mulai sekarang, kami akan melaksanakan fungsi kecil, kami boleh melakukan operasi yang berkaitan pada nilai yang disimpan sebelum ini Fungsi karipap memainkan peranan prapemprosesan;
Peranan kaedah bind:
Praproses ini dalam kaedah panggil balik yang dihantar sebagai konteks konteks;

/**
* bind方法实现原理1
* @param callback [Function] 回调函数
* @param context [Object] 上下文
* @returns {Function} 改变this指向的函数
*/
function bind(callback,context) {
 var outerArg = Array.prototype.slice.call(arguments,2);// 表示取当前作用域中传的参数中除了fn,context以外后面的参数;
 return function (){
  var innerArg = Array.prototype.slice.call(arguments,0);//表示取当前作用域中所有的arguments参数;
  callback.apply(context,outerArg.concat(innerArg));
 }
}

Salin selepas log masuk
 /**
* 模仿在原型链上的bind实现原理(柯理化函数思想)
* @param context [Object] 上下文
* @returns {Function} 改变this指向的函数
*/
Function.prototype.mybind = function mybind (context) {
 var _this = this;
 var outArg = Array.prototype.slice.call(arguments,1);
 // 兼容情况下
 if('bind' in Function.prototype) {
  return this.bind.apply(this,[context].concat(outArg));
 }
 // 不兼容情况下
 return function () {
  var inArg = Array.prototype.slice.call(arguments,0);
  inArg.length === 0?inArg[inArg.length]=window.event:null;
  var arg = outArg.concat(inArg);
  _this.apply(context,arg);
 }
}
Salin selepas log masuk
Di atas adalah kod yang berkaitan untuk menggunakan fungsi kari untuk melaksanakan kaedah bind. Saya harap ia akan membantu semua orang dalam mempelajari pengaturcaraan javascript.
Label berkaitan:
js
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan