日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(详解)你应该知道的new操作符

發(fā)布時(shí)間:2023/12/31 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (详解)你应该知道的new操作符 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

new

作為大家天天使用的操作符,想必大家都不陌生

創(chuàng)建一個(gè)對(duì)象的通用語法

let obj = new Object();

那么在創(chuàng)建對(duì)象的過程中,new 到底做了什么?

MDN

當(dāng)代碼 new Foo(...) 執(zhí)行時(shí),會(huì)發(fā)生以下事情:(MDN地址)

  • 一個(gè)繼承自 Foo.prototype 的新對(duì)象被創(chuàng)建。
  • 使用指定的參數(shù)調(diào)用構(gòu)造函數(shù) Foo ,并將 this 綁定到新創(chuàng)建的對(duì)象。new Foo 等同于 new Foo(),也就是沒有指定參數(shù)列表,Foo 不帶任何參數(shù)調(diào)用的情況。
  • 由構(gòu)造函數(shù)返回的對(duì)象就是 new 表達(dá)式的結(jié)果。如果構(gòu)造函數(shù)沒有顯式返回一個(gè)對(duì)象,則使用步驟1創(chuàng)建的對(duì)象。(一般情況下,構(gòu)造函數(shù)不返回值,但是用戶可以選擇主動(dòng)返回對(duì)象,來覆蓋正常的對(duì)象創(chuàng)建步驟)

按照這個(gè)過程,我們可以大概的模擬一個(gè)new的實(shí)現(xiàn)

function _new(Super) {//返回一個(gè)functionreturn (props)=> {let obj = {}; //創(chuàng)建一個(gè)新對(duì)象obj.__proto__ = Super.prototype;//繼承父類的屬性let result = Super.apply(obj,props);//調(diào)用Super的構(gòu)造函數(shù)return typeof result === 'object'? result : obj;; //判斷Super構(gòu)造器總返回一個(gè)Object} }var a = _new(Super)(['z']) a;//{name: "z"}

ECMA-262

再次閱讀Ecma262
其過程較MDN多了一些判斷,如:

new Object ( [ value ] )
當(dāng)以一個(gè)參數(shù) value 或者無參數(shù)調(diào)用 Object 構(gòu)造器,采用如下步驟:

  • 如果提供了 value, 則
    a.如果 Type(value) 是 Object, 則

    (1)如果 value 是個(gè)原生 ECMAScript 對(duì)象 , 不創(chuàng)建新對(duì)象,簡(jiǎn)單的返回 value.(2)如果 value 是宿主對(duì)象 , 則采取動(dòng)作和返回依賴實(shí)現(xiàn)的結(jié)果的方式可以使 依賴于宿主對(duì)象的 .

    b.如果 Type(value) 是 String, 返回 ToObject(value).
    c.如果 Type(value) 是 Boolean, 返回 ToObject(value).
    d.如果 Type(value) 是 Number, 返回 ToObject(value).

  • 斷言 : 未提供參數(shù) value 或其類型是 Null 或 Undefined.
  • 令 obj為一個(gè)新創(chuàng)建的原生 ECMAScript 對(duì)象 .
  • 設(shè)定 obj 的 [[Prototype]] 內(nèi)部屬性為標(biāo)準(zhǔn)內(nèi)置的 Object 的 prototype 對(duì)象.
  • 設(shè)定 obj 的 [[Class]] 內(nèi)部屬性為 "Object".
  • 設(shè)定 obj 的 [[Extensible]] 內(nèi)部屬性為 true.
  • 設(shè)定 obj 的 8.12 指定的所有內(nèi)部方法
  • 返回 obj.
  • 重新來修改下我們的模擬

    function _new(Super) {//返回一個(gè)functionreturn (value) => {if (value) {switch (typeof value) {case 'object'://這里因?yàn)椴煌乃拗鳝h(huán)境也就是不同的引擎會(huì)有不同的寫法,找了很多博文書籍也沒有詳解具體的判斷邏輯或方法,只好先寫偽代碼了if (宿主對(duì)象) {//采取動(dòng)作和返回依賴實(shí)現(xiàn)的結(jié)果的方式可以使依賴于宿主對(duì)象的} else {return value}break;case 'string':return new String(value);break;case 'boolean':return new Boolean(value);break;case 'number':return new Number(value);break;default:break;}}let obj = {}; //創(chuàng)建一個(gè)新對(duì)象obj.__proto__ = Super.prototype; //繼承父類的屬性//修改內(nèi)部屬性class 為 “Object”,不過ecma262沒有提供任何方法去修改,只提供了一種訪問方法 Object.prototype.toString.call("我們的對(duì)象")//修改內(nèi)部屬性Extensible為 true,不過目前沒有提供方法去修改,只有一個(gè)修改為false Object.preventExtensions("我們的對(duì)象");let result = Super.apply(obj, value); //調(diào)用Super的構(gòu)造函數(shù)return typeof result === 'object' ? result : obj;; //判斷Super構(gòu)造器總返回一個(gè)Object} }var a = _new(Super)(['z']) a; //{name: "z"}

    歡迎補(bǔ)充

    總結(jié)

    以上是生活随笔為你收集整理的(详解)你应该知道的new操作符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲涩色| 老女人性生活视频 | 视频一区二区三区四区五区 | 美女网站av | 91热爆在线 | 巨大胸大乳奶电影 | 国产福利午夜 | 壮汉被书生c到合不拢腿 | 国产高清一区二区 | 国产真人毛片 | 911av| 免费的性爱视频 | 伊人久久大香线蕉成人综合网 | 国产性―交一乱―色―情人 | 色哟哟中文字幕 | 欧美性色网站 | 鲁一鲁一鲁一鲁一av | 日本女人一区二区三区 | 嫩草国产精品 | 深夜视频在线播放 | 久久久久视 | 91丨国产| 成人亚洲精品久久久久软件 | 久久久精品人妻av一区二区三区 | 精品国产大片大片大片 | 日本精品免费一区二区三区 | 不卡日本| 国产久操视频 | 一级草逼片| 精品日韩一区二区三区 | www国产一区 | 欧美日韩中字 | 久草中文网 | 桃色视频在线 | 亚洲人成免费 | 国产精品一区免费观看 | 高潮白浆女日韩av免费看 | 成人欧美视频在线观看 | 国产色婷婷一区二区 | 久久一级视频 | 美女伦理水蜜桃4 | 成人v精品蜜桃久一区 | 国产午夜性春猛交ⅹxxx | 夜夜春很很躁夜夜躁 | 成人啪啪18免费游戏链接 | 欧美三级三级三级爽爽爽 | 97超碰在线播放 | 国产精品久久久久久久av福利 | 性做爰裸体按摩视频 | 色播在线观看 | 国产三级av在线播放 | 伊人一区二区三区 | 国产情侣一区二区 | 精品一区二区三区免费毛片爱 | 国产精品麻豆一区二区三区 | 久久免费在线观看 | 91精品影视 | 日本女优网址 | 九九免费 | 在线观视频免费观看 | 8x8ⅹ成人永久免费视频 | 欧美色偷偷| 一本久久久 | 天堂亚洲精品 | 久久狠狠爱 | 一级黄色大片免费观看 | 日韩高清网站 | 国产精品久久久久久无人区 | 大奶一区二区 | 成人黄色免费视频 | 人妻精品久久久久中文字幕69 | 欧美成人片在线观看 | 欧美激情亚洲激情 | 欧美精品在线视频观看 | 久久久99精品 | 亚洲国产精品久久久久爰色欲 | www.日本色 | 精品久| 欧美极品三级 | 狠狠操综合 | 人人艹人人 | 又紧又大又爽精品一区二区 | japanese在线观看 | 诱夫1v1高h| 日本在线看片 | 中文字幕久久精品 | 超级碰在线观看 | 久久精品久久久精品美女 | aaa在线 | 91成人国产综合久久精品 | 久久午夜福利电影 | 久久久96| 无码av天堂一区二区三区 | 久久91视频| 一区二区高清在线 | 日韩精品一区二区三区电影 | 国产精欧美一区二区三区蓝颜男同 | 高跟肉丝丝袜呻吟啪啪网站av | 高清在线一区 |