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

資訊專欄INFORMATION COLUMN

new操作符都做了什么

liangdas / 1396人閱讀

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

創(chuàng)建一個空對象

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

實行構造函數(shù)中的代碼,構造函數(shù)中的this指向該對象

返回該對象(除非構造函數(shù)中返回了一個對象或者函數(shù))

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

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

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

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

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

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

相關文章

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

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

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

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

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

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

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

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

    Atom 評論0 收藏0

發(fā)表評論

0條評論

liangdas

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<