亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

new操作符都做了什么

liangdas / 1444人閱讀

摘要:為什么和的值不一樣,要從操作符說起,在的時(shí)候,程序做了以下四個(gè)創(chuàng)建步驟創(chuàng)建一個(gè)空對(duì)象將所創(chuàng)建的對(duì)象的指向構(gòu)造函數(shù)的實(shí)行構(gòu)造函數(shù)中的代碼,構(gòu)造函數(shù)中的指向該對(duì)象返回該對(duì)象除非構(gòu)造函數(shù)中返回了一個(gè)對(duì)象或者函數(shù)注意第步,上述和構(gòu)造函數(shù)中由于返回的

var fun = function () {
    this.name = "peter";
    
    return {
        name: "jack"
    };
}

var fun1 = function() {
    this.name = "peter";
    
    return "jack";
}

var p1 = new fun();
var p2 = new fun1();
p1.name; // jack
p2.name; // peter

為什么p1和p2的name值不一樣,要從new操作符說起,在new的時(shí)候,程序做了以下四個(gè)創(chuàng)建步驟:

創(chuàng)建一個(gè)空對(duì)象

將所創(chuàng)建的對(duì)象的__ proto __指向構(gòu)造函數(shù)的prototype

實(shí)行構(gòu)造函數(shù)中的代碼,構(gòu)造函數(shù)中的this指向該對(duì)象

返回該對(duì)象(除非構(gòu)造函數(shù)中返回了一個(gè)對(duì)象或者函數(shù))

注意第4步,上述 fun和fun1構(gòu)造函數(shù)中由于fun返回的是一個(gè)對(duì)象,所有p1等于fun中返回的對(duì)象,

fun1中返回的不是對(duì)象,所有p2.__ proto __等于fun1.prototype;

用代碼模擬new創(chuàng)建過程就是

function objectFactory() {
    //把a(bǔ)rgumnets轉(zhuǎn)化為數(shù)組
    var args = Array.prototype.slice.call(arguments);
    // 提取第一個(gè)構(gòu)造對(duì)象
    var Constructor = args.shift();
    // 創(chuàng)建constructor實(shí)例 instance 
    var instance = Object.create(Constructor.prototype);
    // 使用apply函數(shù)運(yùn)行args,把instance綁定到this
    var temp = Constructor.apply(instance, args);
    //返回對(duì)象判斷,是object 還是 null 還是實(shí)例
    return (typeof temp === "object" ||typeof temp === "function"  && temp !== null ) ? temp : instance;
}

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

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

相關(guān)文章

  • 簡述ES5之object.create()和new() 的區(qū)別 做了哪些事

    摘要:注意該參數(shù)對(duì)象不能是,另外只有該對(duì)象中自身擁有的可枚舉的屬性才有效,也就是說該對(duì)象的原型鏈上屬性是無效的。并且使用進(jìn)行強(qiáng)轉(zhuǎn)作用環(huán)境。從而實(shí)現(xiàn)了實(shí)例的創(chuàng)建。 先說一下object.create() es5中新增的object操作方法object.create() 接受兩個(gè)參數(shù):Object.create(obj,propertiesObject); obj : 一個(gè)對(duì)象,是新創(chuàng)建的...

    mmy123456 評(píng)論0 收藏0
  • 【周刊-1】三年大廠面試官-面試題精選及答案

    摘要:前言在阿里和騰訊工作了年,當(dāng)了年的前端面試官,把期間我和我的同事常問的面試題和答案匯總在我的中。項(xiàng)目地址是我是小蝌蚪,騰訊高級(jí)前端工程師,跟著我一起每周攻克幾個(gè)前端技術(shù)難點(diǎn)。 前言 在阿里和騰訊工作了6年,當(dāng)了3年的前端面試官,把期間我和我的同事常問的面試題和答案匯總在我 Github 的 Weekly-FE-Interview 中。希望對(duì)大家有所幫助。 如果你在bat面試的時(shí)候遇到了...

    Bamboy 評(píng)論0 收藏0
  • 【周刊-1】三年大廠面試官-面試題精選及答案

    摘要:前言在阿里和騰訊工作了年,當(dāng)了年的前端面試官,把期間我和我的同事常問的面試題和答案匯總在我的中。項(xiàng)目地址是我是小蝌蚪,騰訊高級(jí)前端工程師,跟著我一起每周攻克幾個(gè)前端技術(shù)難點(diǎn)。 前言 在阿里和騰訊工作了6年,當(dāng)了3年的前端面試官,把期間我和我的同事常問的面試題和答案匯總在我 Github 的 Weekly-FE-Interview 中。希望對(duì)大家有所幫助。 如果你在bat面試的時(shí)候遇到了...

    ThinkSNS 評(píng)論0 收藏0
  • 【前端】從輸入頁面地址到展示頁面信息 瀏覽器和服務(wù)器做了什么

    摘要:很久以前理解過一個(gè)從在瀏覽器地址欄輸入,經(jīng)常建站但是不明白原理,總結(jié)一下。瀏覽器地址欄輸入瀏覽器會(huì)先查看瀏覽器緩存系統(tǒng)緩存路由緩存,如有存在緩存,就直接顯示。 很久以前理解過一個(gè)URL從在瀏覽器地址欄輸入,經(jīng)常建站但是不明白原理,總結(jié)一下。 showImg(https://segmentfault.com/img/bVbj2Rv?w=512&h=502); 1、瀏覽器地址欄輸入url ...

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

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

0條評(píng)論

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