做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JavaScript中的bind方法的代碼示例

來源:懂視網 責編:小采 時間:2020-11-27 19:27:15
文檔

JavaScript中的bind方法的代碼示例

JavaScript中的bind方法的代碼示例:本篇文章給大家帶來的內容是關于JavaScript中的bind方法的代碼示例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。之前已經實現過了call,apply和new。今天順便把bind也實現下。首先:bind方法返回的是一個綁定this后的函數,并且該函
推薦度:
導讀JavaScript中的bind方法的代碼示例:本篇文章給大家帶來的內容是關于JavaScript中的bind方法的代碼示例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。之前已經實現過了call,apply和new。今天順便把bind也實現下。首先:bind方法返回的是一個綁定this后的函數,并且該函

本篇文章給大家帶來的內容是關于JavaScript中的bind方法的代碼示例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

之前已經實現過了call,apply和new。今天順便把bind也實現下。
首先:

  1. bind方法返回的是一個綁定this后的函數,并且該函數并沒有執行,需要手動去調用。(從這一點看bind函數就是一個高階函數,而且和call,apply方法有區別)。
  2. bind方法可以綁定this,傳遞參數。注意,這個參數可以分多次傳遞。
  3. 如果bind綁定后的函數被new了,那么此時this指向就發生改變。此時的this就是當前函數的實例。
  4. 構造函數上的屬性和方法,每個實例上都有。

ok,上代碼~

Function.prototype.mybind = function(context){
 let that = this;
 let args1 = Array.prototype.slice.call(arguments,1);
 let bindFn = function(){
 let args2 = Array.prototype.slice.call(arguments);
 return that.apply(this instanceof bindFn?this:context,args1.concat(args2)); 
 }
 let Fn = function(){};
 Fn.prototype = this.prototype;
 bindFn.prototype = new Fn();
 return bindFn;
}

首先 獲取到第一次傳遞的參數args1,此處要做截取處理,因為第一個參數是this。接下來聲明一個函數bindFn,在該bindFn中獲取了第二次傳的參數args2,并且返回了that的執行。此處的that就是原函數,執行該原函數綁定原函數this的時候要注意判斷。如果this是構造函數bindFn new出來的實例,那么此處的this一定是該實例本身。反之,則是bind方法傳遞的this(context)。最后再把兩次獲得的參數通過concat()連接起來傳遞進去,這樣就實現了前3條。
最后一條:構造函數上的屬性和方法,每個實例上都有。 此處通過一個中間函數Fn,來連接原型鏈。Fn的prototype等于this的prototype。Fn和this指向同一個原型對象。bindFn的prototype又等于Fn的實例。Fn的實例的__proto__又指向Fn的prototype。即bindFn的prototype指向和this的prototype一樣,指向同一個原型對象。至此,就實現了自己的bind方法。
代碼寫好了, 測試一下吧~

Function.prototype.mybind = function(context){
 let that = this;
 let args1 = Array.prototype.slice.call(arguments,1);
 let bindFn = function(){
 let args2 = Array.prototype.slice.call(arguments);
 return that.apply(this instanceof bindFn?this:context,args1.concat(args2)); 
 }
 let Fn = function(){};
 Fn.prototype = this.prototype;
 bindFn.prototype = new Fn();
 return bindFn;
}

let obj = {
 name:'tiger'
}

function fn(name,age){
 this.say = '汪汪~';
 console.log(this);
 console.log(this.name+'養了一只'+name+','+age+'歲了 ');
}

/** 第一次傳參 */
let bindFn = fn.mybind(obj,'

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JavaScript中的bind方法的代碼示例

JavaScript中的bind方法的代碼示例:本篇文章給大家帶來的內容是關于JavaScript中的bind方法的代碼示例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。之前已經實現過了call,apply和new。今天順便把bind也實現下。首先:bind方法返回的是一個綁定this后的函數,并且該函
推薦度:
標簽: 中的 方法 js
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 香河县| 名山县| 宿迁市| 云梦县| 长春市| 罗山县| 赤壁市| 贞丰县| 鄯善县| 株洲县| 平阳县| 双鸭山市| 河东区| 松滋市| 黄陵县| 柞水县| 南丹县| 夏津县| 塔河县| 固原市| 齐河县| 孙吴县| 卓尼县| 安仁县| 阳曲县| 息烽县| 明水县| 万源市| 怀远县| 泽普县| 远安县| 宁夏| 湖口县| 清原| 永城市| 荃湾区| 茌平县| 岑巩县| 宁城县| 蒙山县| 玛多县|