成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

手動(dòng)實(shí)現(xiàn)一個(gè)new操作符理解

lentoo / 1612人閱讀

手動(dòng)實(shí)現(xiàn)一個(gè)new操作符理解

網(wǎng)上看了一些手動(dòng)實(shí)現(xiàn)new操作符的方法和效果,現(xiàn)在來(lái)總結(jié)下

第一種方法
    function new1(func) {
        var newObj = Object.create(func.prototype);    // 創(chuàng)建一個(gè)繼承自func.prototype的新對(duì)象
        var returnObj = func.apply(newObj, Array.prototype.slice.call(arguments, 1));   //截取new1函數(shù)第二個(gè)以及第二個(gè)之后的參數(shù),在newObj作用域內(nèi)執(zhí)行改造函數(shù)func
        if ((typeof returnObj === "object" || typeof returnObj === "function") && ret !== null) {
            return returnObj;
        }   //如果傳入?yún)?shù)中的構(gòu)造函數(shù)執(zhí)行后的returnObj是“對(duì)象”類(lèi)型(比如new1(Object)),那么這個(gè)對(duì)象會(huì)取代newObj作為返回的對(duì)象
        return newObj;
    }
第二種方法
function new2(func) {
        return function() {
            let newObj = {
                __proto__: func.prototype    // 新生成一個(gè)對(duì)象,且新對(duì)象的原型對(duì)象繼承自構(gòu)造對(duì)象的原型對(duì)象
            }
            var returnObj =func.apply(obj, arguments)   // 以第二次執(zhí)行函數(shù)的參數(shù),在obj作用域中執(zhí)行func
            if ((typeof returnObj === "object" || typeof returnObj === "function") && returnObj !== null) {
                return returnObj;
            }   //同理,returnObj是“對(duì)象”類(lèi)型(比如new1(Object)),那么這個(gè)對(duì)象會(huì)取代newObj作為返回的對(duì)象
            return newObj
        }
    }
和原生對(duì)象構(gòu)造方式對(duì)比
    var object1 = new1(Object);
    var object2 = new2(Object)();
    var object3 = new Object();
    
    console.dir(object1)
    console.dir(object2)
    console.dir(object3)

在控制臺(tái)中查看結(jié)果

沒(méi)有區(qū)別。
再假定一個(gè)自定義的構(gòu)造函數(shù)進(jìn)行對(duì)比

    function person(name, age) {
        this.name = name
        this.age = age
    }
    
    var obj1 = new1(person,"zhus",25);
    var obj2 = new2(person)("zhus",25);
    var obj3 = new person("zhus",25);
    
    console.dir(obj1)
    console.dir(obj2)
    console.dir(obj3)

對(duì)比結(jié)果


也沒(méi)有區(qū)別。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/103350.html

相關(guān)文章

  • 一名【合格】前端工程師的自檢清單

    摘要:在他的重學(xué)前端課程中提到到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系中的重要崗位之一。大部分前端工程師的知識(shí),其實(shí)都是來(lái)自于實(shí)踐和工作中零散的學(xué)習(xí)。一基礎(chǔ)前端工程師吃飯的家伙,深度廣度一樣都不能差。 開(kāi)篇 前端開(kāi)發(fā)是一個(gè)非常特殊的行業(yè),它的歷史實(shí)際上不是很長(zhǎng),但是知識(shí)之繁雜,技術(shù)迭代速度之快是其他技術(shù)所不能比擬的。 winter在他的《重學(xué)前端》課程中提到: 到現(xiàn)在為止,前端工程師已經(jīng)成為研...

    羅志環(huán) 評(píng)論0 收藏0
  • 一名【合格】前端工程師的自檢清單

    摘要:在他的重學(xué)前端課程中提到到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系中的重要崗位之一。大部分前端工程師的知識(shí),其實(shí)都是來(lái)自于實(shí)踐和工作中零散的學(xué)習(xí)。一基礎(chǔ)前端工程師吃飯的家伙,深度廣度一樣都不能差。開(kāi)篇 前端開(kāi)發(fā)是一個(gè)非常特殊的行業(yè),它的歷史實(shí)際上不是很長(zhǎng),但是知識(shí)之繁雜,技術(shù)迭代速度之快是其他技術(shù)所不能比擬的。 winter在他的《重學(xué)前端》課程中提到: 到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系...

    isaced 評(píng)論0 收藏0
  • 深入理解控制反轉(zhuǎn)(IoC)和依賴(lài)注入(DI)

    摘要:本文一大半內(nèi)容都是通過(guò)舉例來(lái)讓讀者去理解什么是控制反轉(zhuǎn)和依賴(lài)注入,通過(guò)理解這些概念,來(lái)更加深入。這種由外部負(fù)責(zé)其依賴(lài)需求的行為,我們可以稱(chēng)其為控制反轉(zhuǎn)。工廠模式,依賴(lài)轉(zhuǎn)移當(dāng)然,實(shí)現(xiàn)控制反轉(zhuǎn)的方法有幾種。 容器,字面上理解就是裝東西的東西。常見(jiàn)的變量、對(duì)象屬性等都可以算是容器。一個(gè)容器能夠裝什么,全部取決于你對(duì)該容器的定義。當(dāng)然,有這樣一種容器,它存放的不是文本、數(shù)值,而是對(duì)象、對(duì)象的描...

    HollisChuang 評(píng)論0 收藏0
  • php實(shí)現(xiàn)依賴(lài)注入(DI)和控制反轉(zhuǎn)(IOC)

    摘要:工廠模式,依賴(lài)轉(zhuǎn)移當(dāng)然,實(shí)現(xiàn)控制反轉(zhuǎn)的方法有幾種。其實(shí)我們稍微改造一下這個(gè)類(lèi),你就明白,工廠類(lèi)的真正意義和價(jià)值了。雖然如此,工廠模式依舊十分優(yōu)秀,并且適用于絕大多數(shù)情況。 此篇文章轉(zhuǎn)載自laravel-china,chongyi的文章https://laravel-china.org/top...原文地址: http://www.insp.top/learn-lar... ,轉(zhuǎn)載務(wù)必保...

    tomato 評(píng)論0 收藏0
  • 手動(dòng)實(shí)現(xiàn)bind函數(shù)(附MDN提供的Polyfill方案解析)

    摘要:被調(diào)用時(shí),等參數(shù)將置于實(shí)參之前傳遞給被綁定的方法。它返回由指定的值和初始化參數(shù)改造的原函數(shù)拷貝。一個(gè)綁定函數(shù)也能使用操作符創(chuàng)建對(duì)象這種行為就像把原函數(shù)當(dāng)成構(gòu)造器。其實(shí)這個(gè)思路也是庫(kù)如何實(shí)現(xiàn)繼承的方法。他的函數(shù)如下最后一步是將的指回。 update: 2018-06-08 原文鏈接 為什么要自己去實(shí)現(xiàn)一個(gè)bind函數(shù)? bind()函數(shù)在 ECMA-262 第五版才被加入;它可能無(wú)法在所...

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

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

0條評(píng)論

閱讀需要支付1元查看
<