方法1
Funtion.prototype.bind = function(context){ var self = this; return function(){ return self.apply(context, arguments); } }
缺點: 沒有辦法在調用bind方法的時候指定額外的參數(shù)
方法2Function.prototype.bind = function(context){ var args = Array.prototype.slice.call(arguments, 1), self = this; return function(){ var innerArgs = Array.prototype.slice.call(arguments); var finalArgs = args.concat(innerArgs); return self.apply(context, finalArgs); } }方法3
在JavaScript中,使用bind方法會遇到以下這種情況:
function Person(){ this.name = "xin"; this.age = "22"; } var obj = { sex: "male"}; var temp = Person.bind(obj); temp(); // 調用temp后,obj就成為了 /*{ name: "xin", age: "22", sex: "male" }* var p = new temp(); // 結果為: p = { name: "xin", age: "22"}
通過上面的例子,可以看到通過new方式調用temp方法和用new方式調用Person方法的結果是一致的,那么這種情況該如何實現(xiàn)呢?下面的方法是《JavaScript Web Application》一書中對bind()的實現(xiàn):通過設置一個中轉構造函數(shù)F,使綁定后的函數(shù)與調用bind()的函數(shù)處于同一原型鏈上,用new操作符調用綁定后的函數(shù),返回的對象也能正常使用instanceof,因此這是最嚴謹?shù)腷ind()實現(xiàn)。
Funtion.prototype.bind = function(context){ var args = Array.prototype.slice.call(arguments, 1), self = this, F = function(){}, bound = function(){ var innerArgs = Array.prototype.slice.call(arguments); var finalArgs = args.concat(innerArgs); // 當通過new方法調用時,this就是F的一個實例 return self.apply((this instanceof F ? this: context), finalArgs); }; F.prototype = self.prototype; bound.prototype = new F(); return bound; }參考資料
Javascript中bind()方法的使用與實現(xiàn)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/83652.html
摘要:語法中接口可以包含實現(xiàn)方法,需要使用修飾,此類方法稱為默認方法。核心特性接口默認方法就介紹到這里了,后續(xù)小樂會繼續(xù)講述核心特性。 JAVA8已經發(fā)布很久,是自java5(2004年發(fā)布)之后Oracle發(fā)布的最重要的一個版本。其中包括語言、編譯器、庫、工具和JVM等諸多方面的新特性,對于國內外互聯(lián)網(wǎng)公司來說,Java8是以后技術開發(fā)的趨勢。這里主要講解在開發(fā)中幾個核心的新特性。(主要從...
摘要:項目訓練目標項目訓練目標項目目標綜合運用前面所學習的知識點熟練層層層之間的方法相互調用操作熟練操作數(shù)據(jù)庫表完成增刪改查了解公司項目開發(fā)的流程,充分的掌握項目需求分析設計與功能的代碼實現(xiàn)。 01項目訓練目標 * A: 項目訓練目標 * a: 項目目標 * 綜合運用前面所學習的知識點 * 熟練View層、Service層、Dao層之間的方法相互調用操...
摘要:模板方法模式定義定義抽象類并且聲明一些抽象基本方法供子類實現(xiàn)不同邏輯,同時在抽象類中定義具體方法把抽象基本方法封裝起來,這就是模板方法模式。 近日,ofo小黃車宣布入駐法國巴黎,正式進入全球第20個國家,共享單車已然改變了我們的出行方式。就拿我自己來說,每當下班出地鐵的第一件事,以光速鎖定一輛共享單車,百米沖刺的速度搶在別人之前占領它。 而大家都是重復著同樣的動作,拿出手機開鎖、騎車、...
閱讀 3737·2021-10-14 09:43
閱讀 3322·2021-08-25 09:38
閱讀 618·2019-08-30 15:55
閱讀 1359·2019-08-30 13:05
閱讀 2252·2019-08-29 16:05
閱讀 514·2019-08-29 12:58
閱讀 2802·2019-08-29 12:34
閱讀 3253·2019-08-26 12:15