亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談JS中的bind方法與函數(shù)柯里化

 更新時間:2016年08月10日 10:44:34   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談JS中的bind方法與函數(shù)柯里化。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

綁定函數(shù)bind()最簡單的用法是創(chuàng)建一個函數(shù),使這個函數(shù)不論怎么調用都有同樣的this值。不同于call和apply只是單純地設置this的值后傳參,它還會將所有傳入bind()方法中的實參(第一個參數(shù)之后的參數(shù))與this一起綁定。

關于這個特性看《JS權威指南》原文的例子:

var sum = function(x,y) { return x + y }; 

var succ = sum.bind(null, 1); //讓this指向null,其后的實參也會作為實參傳入被綁定的函數(shù)sum

succ(2); // => 3: 可以看到1綁定到了sum函數(shù)中的x

其次, bind()方法所返回的函數(shù)的length(形參數(shù)量)等于原函數(shù)的形參數(shù)量減去傳入bind()方法中的實參數(shù)量(第一個參數(shù)以后的所有參數(shù)),因為傳入bind中的實參都會綁定到原函數(shù)的形參,舉個例子:

function func(a,b,c,d){...} //func的length為4

var after = func.bind(null,1,2); //這里輸入了兩個實參(1,2)綁定到了func函數(shù)的a,b

console.log(after.length); //after的length為2

第三,當bind()所返回的函數(shù)用作構造函數(shù)的時候, 傳入bind()的this將被忽略,實參會全部傳入原函數(shù),這樣說很抽象,舉個例子:

function original(x){
 this.a = 1;
 this.b = function(){return this.a + x}
}
var obj={
 a = 10
}
var newObj = new(original.bind(obj, 2)); //傳入了一個實參2

console.log(newObj.a); //輸出1, 說明返回的函數(shù)用作構造函數(shù)時obj(this的值)被忽略了
console.log(newObj.b()); //輸出3 ,說明傳入的實參2傳入了原函數(shù)original

以上就是ES5中bind方法的特性, 這種技術也被稱為函數(shù)柯里化。這種技術將多個參數(shù)的函數(shù)變成只帶一個參數(shù)的函數(shù)。bind方法就是該技術在js中的實踐。

關于這篇淺談JS中的bind方法與函數(shù)柯里化就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 微信小程序實現(xiàn)菜單左右聯(lián)動效果

    微信小程序實現(xiàn)菜單左右聯(lián)動效果

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)菜單左右聯(lián)動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript隊列結構Queue實現(xiàn)過程解析

    JavaScript隊列結構Queue實現(xiàn)過程解析

    這篇文章主要介紹了JavaScript隊列結構Queue實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • socket在egg中的使用實例代碼詳解

    socket在egg中的使用實例代碼詳解

    這篇文章主要介紹了socket在egg中的使用,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • 解決layui彈出層layer的area過大被遮擋的問題

    解決layui彈出層layer的area過大被遮擋的問題

    今天小編就為大家分享一篇解決layui彈出層layer的area過大被遮擋的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript中的一些隱式轉換和總結(推薦)

    JavaScript中的一些隱式轉換和總結(推薦)

    這篇文章主要介紹了JavaScript中的一些隱式轉換和總結,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-12-12
  • JS設計模式之訪問者模式的用法詳解

    JS設計模式之訪問者模式的用法詳解

    JS訪問者模式是一種行為型設計模式,用于將算法與對象結構分離, 該模式允許你定義新的操作(訪問者)而無需修改現(xiàn)有對象結構(被訪問者), 通過這種方式,你可以在不改變對象結構的情況下添加新的操作,本文就給大家詳細的講講JS訪問者模式的用法
    2023-08-08
  • 前端技巧之ESLint忽略檢查行和文件總結

    前端技巧之ESLint忽略檢查行和文件總結

    ESLint是一個流行的JavaScript代碼檢查工具,它可以幫助團隊確保代碼質量,避免常見的錯誤和格式問題,這篇文章主要給大家介紹了關于前端技巧之ESLint忽略檢查行和文件的相關資料,需要的朋友可以參考下
    2023-11-11
  • 實例分析JS與Node.js中的事件循環(huán)

    實例分析JS與Node.js中的事件循環(huán)

    本篇文章通過實例給大家詳細分析了JS與Node.js中的事件的原理以及用法,大家學習一下吧。
    2017-12-12
  • JS實現(xiàn)問卷星自動填問卷腳本并在兩秒自動提交功能

    JS實現(xiàn)問卷星自動填問卷腳本并在兩秒自動提交功能

    這篇文章主要介紹了JS實現(xiàn)問卷星自動填問卷腳本兩秒自動提交功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2017-08-08
  • 弱類型語言javascript中 a,b 的運算實例小結

    弱類型語言javascript中 a,b 的運算實例小結

    這篇文章主要介紹了弱類型語言javascript中 a,b 的運算,結合實例形式總結分析了js閉包函數(shù)中布爾值與字符串的a,b運算相關操作技巧,需要的朋友可以參考下
    2019-08-08

最新評論