Penjelasan terperinci tentang fungsi JavaScript kari

PHP中文网
Lepaskan: 2017-04-01 15:08:01
asal
2095 orang telah melayarinya

Apa itu kari

Kari ialah proses penukaran yang mengubah fungsi yang menerima berbilang parameter Menjadi fungsi yang menerima satu parameter (Anotasi: parameter pertama fungsi asal Jika parameter lain diperlukan, mengembalikan fungsi baharu yang menerima parameter yang tinggal dan mengembalikan hasilnya.

Idea fungsi Ke Lihua: idea pra-pemprosesan js prinsip menggunakan pelaksanaan fungsi untuk membentuk skop yang tidak dimusnahkan , Simpan semua kandungan yang perlu dipraproses dalam skop ini yang tidak dimusnahkan, dan kembalikan fungsi kecil Mulai sekarang, kami akan melaksanakan fungsi kecil, kami boleh melakukan operasi yang berkaitan pada yang disimpan sebelum ini nilai;

Fungsi kari terutamanya memainkan peranan prapemprosesan; dalam Ini dalam kaedah panggil balik pra-diproses sebagai konteks; > Sekeping kod berikut meniru prinsip pelaksanaan mengikat pada rantai prototaip

Fungsi kari (Kari)

dalam Dalam sains komputer, kari ialah teknik yang mengubah fungsi yang menerima berbilang parameter kepada fungsi yang menerima satu parameter (parameter pertama fungsi asal), dan mengembalikan fungsi baharu yang menerima parameter yang tinggal dan mengembalikan hasil Kari adalah untuk lulus dalam parameter tertentu terlebih dahulu untuk mendapatkan fungsi yang mudah. Tetapi parameter yang diluluskan sebelum ini disimpan dalam penutupan, jadi akan ada beberapa ciri pelik. Contohnya:

/**
* 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
Contoh:

Di atas ialah penjelasan terperinci tentang fungsi JavaScript currying Untuk kandungan yang lebih berkaitan, sila perhatikan laman web PHP Cina (www.php.cn )!

/**
* 模仿在原型链上的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
Label berkaitan:
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!