国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

20170625-bind方法的實(shí)現(xiàn)

djfml / 2624人閱讀

方法1
Funtion.prototype.bind = function(context){
    var self = this;
    return function(){
        return self.apply(context, arguments);
    }
}

缺點(diǎn): 沒有辦法在調(diào)用bind方法的時(shí)候指定額外的參數(shù)

方法2
Function.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方法會(huì)遇到以下這種情況:

function Person(){
    this.name = "xin";
    this.age = "22";
}
var obj = { sex: "male"};
var temp = Person.bind(obj);
temp();
// 調(diào)用temp后,obj就成為了
/*{
    name: "xin",
    age: "22",
    sex: "male"
}*
var p = new temp();
// 結(jié)果為: p = { name: "xin", age: "22"}

通過上面的例子,可以看到通過new方式調(diào)用temp方法和用new方式調(diào)用Person方法的結(jié)果是一致的,那么這種情況該如何實(shí)現(xiàn)呢?下面的方法是《JavaScript Web Application》一書中對(duì)bind()的實(shí)現(xiàn):通過設(shè)置一個(gè)中轉(zhuǎn)構(gòu)造函數(shù)F,使綁定后的函數(shù)與調(diào)用bind()的函數(shù)處于同一原型鏈上,用new操作符調(diào)用綁定后的函數(shù),返回的對(duì)象也能正常使用instanceof,因此這是最嚴(yán)謹(jǐn)?shù)腷ind()實(shí)現(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);
            // 當(dāng)通過new方法調(diào)用時(shí),this就是F的一個(gè)實(shí)例
            return self.apply((this instanceof F ? this: context), finalArgs);
        };
    F.prototype = self.prototype;
    bound.prototype = new F();
    return bound;
}
參考資料

Javascript中bind()方法的使用與實(shí)現(xiàn)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/83652.html

相關(guān)文章

  • 樂字節(jié)-Java8核心特性實(shí)戰(zhàn)-接口默認(rèn)方法

    摘要:語(yǔ)法中接口可以包含實(shí)現(xiàn)方法,需要使用修飾,此類方法稱為默認(rèn)方法。核心特性接口默認(rèn)方法就介紹到這里了,后續(xù)小樂會(huì)繼續(xù)講述核心特性。 JAVA8已經(jīng)發(fā)布很久,是自java5(2004年發(fā)布)之后Oracle發(fā)布的最重要的一個(gè)版本。其中包括語(yǔ)言、編譯器、庫(kù)、工具和JVM等諸多方面的新特性,對(duì)于國(guó)內(nèi)外互聯(lián)網(wǎng)公司來(lái)說,Java8是以后技術(shù)開發(fā)的趨勢(shì)。這里主要講解在開發(fā)中幾個(gè)核心的新特性。(主要從...

    lbool 評(píng)論0 收藏0
  • 1、管家婆項(xiàng)目

    摘要:項(xiàng)目訓(xùn)練目標(biāo)項(xiàng)目訓(xùn)練目標(biāo)項(xiàng)目目標(biāo)綜合運(yùn)用前面所學(xué)習(xí)的知識(shí)點(diǎn)熟練層層層之間的方法相互調(diào)用操作熟練操作數(shù)據(jù)庫(kù)表完成增刪改查了解公司項(xiàng)目開發(fā)的流程,充分的掌握項(xiàng)目需求分析設(shè)計(jì)與功能的代碼實(shí)現(xiàn)。 01項(xiàng)目訓(xùn)練目標(biāo) * A: 項(xiàng)目訓(xùn)練目標(biāo) * a: 項(xiàng)目目標(biāo) * 綜合運(yùn)用前面所學(xué)習(xí)的知識(shí)點(diǎn) * 熟練View層、Service層、Dao層之間的方法相互調(diào)用操...

    binaryTree 評(píng)論0 收藏0
  • Java設(shè)計(jì)模式-模板方法模式

    摘要:模板方法模式定義定義抽象類并且聲明一些抽象基本方法供子類實(shí)現(xiàn)不同邏輯,同時(shí)在抽象類中定義具體方法把抽象基本方法封裝起來(lái),這就是模板方法模式。 近日,ofo小黃車宣布入駐法國(guó)巴黎,正式進(jìn)入全球第20個(gè)國(guó)家,共享單車已然改變了我們的出行方式。就拿我自己來(lái)說,每當(dāng)下班出地鐵的第一件事,以光速鎖定一輛共享單車,百米沖刺的速度搶在別人之前占領(lǐng)它。 而大家都是重復(fù)著同樣的動(dòng)作,拿出手機(jī)開鎖、騎車、...

    levius 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<