function Person(name, age) { this.name = name; this.age = age } var person = new Person("小明", 18); console.log(person.name); //小明 console.log(person.age); //18執(zhí)行new命令會經(jīng)過以下幾個步驟
用代碼解釋一下創(chuàng)建一個空對象,這個對象將會是new Person()返回的對象實例;
將這個空對象的原型指向構(gòu)造函數(shù)的prototype屬性;
將構(gòu)造函數(shù)的this指向空對象,并運行構(gòu)造函數(shù);
判斷構(gòu)造函數(shù)返回的是不是對象,是的話返回默認對象,不是的話返回之前創(chuàng)建的空對象,沒有返回值默認返回空對象
function Person(name, age) { this.name = name; this.age = age //return "小明" //如果返回的不是Object類型,將忽略這個return 返回之前創(chuàng)建的空對象 /* return { //如果返回的是Object類型,直接返回這個對象 "name" : "小花", "age" : 22 } */ } function _new(person, ...rest){ var obj = {}; // 創(chuàng)建一個空對象,這個對象將會是返回的對象實例 obj.__prototype__ = person.prototype; // 將這個空對象的原型指向person的prototype屬性; //上述兩步可以合為一步 : var obj = Object.create(person.prototype) var res = person.apply(obj, rest); // 將person的this指向空對象,并運行person函數(shù),apply命令綁定this后就會運行person return (typeof res === "object" && res != null) ? res: obj; // 判斷res返回的是不是對象,是的話返res,不是的話返回之前創(chuàng)建的obj,沒有返回值默認返回obj } var xiaoming = _new(Person, "小明", 15) console.log(xiaoming .name); //小明 console.log(xiaoming .age); //15
本篇如能對您有所幫助,實在是感到榮幸。如有不合理之處也請大家多多指點。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/98445.html
摘要:命令作用作用是執(zhí)行構(gòu)造函數(shù),返回實例對象上面例子是自定義一個構(gòu)造函數(shù),其最大的特點就是首字母大寫,用執(zhí)行構(gòu)造函數(shù)其中,在的執(zhí)行下,代表了實例化后的對象,這個也就有屬性注意點如果不用執(zhí)行構(gòu)造函數(shù),那么指向的是全局有兩種方式可以避免內(nèi)部定義嚴格 new命令 new作用 作用是執(zhí)行構(gòu)造函數(shù),返回實例對象 function F() { this.name = object } var ...
摘要:對語法樹的掃描,同樣提供了掃描器。詞法分析過程如下圖所示語法分析,即根據(jù)語法由序列生成抽象語法樹,對應(yīng)實現(xiàn)類為。生成的抽象語法樹如下圖所示的實現(xiàn)原理依賴開發(fā)的典型的第三方庫有,代碼自動生成的和,代碼檢查的和,編譯階段完成依賴注入的等。 原文:http://nullwy.me/2017/04/java...如果覺得我的文章對你有用,請隨意贊賞 javac 是 Java 代碼的編譯器 [...
摘要:插件提供內(nèi)容,負責(zé)渲染。增量更新,盡可能地減少重新渲染長時間運行的任務(wù)應(yīng)該支持,并可以取消插件能夠正確地處理對象的生命周期。使用了模式,運行可以將這個對象銷毀。 使用 命令行使用 幫助:code --help 使用已經(jīng)打開的窗口來打開文件:code -r 打開文件并滾動到特定行:code -r -g package.json:128 比較兩個文件:code -r -d a.tx...
閱讀 2212·2021-11-05 09:42
閱讀 2927·2021-09-23 11:21
閱讀 2920·2019-08-30 14:00
閱讀 3374·2019-08-30 13:15
閱讀 546·2019-08-29 17:18
閱讀 3616·2019-08-29 16:29
閱讀 2844·2019-08-29 14:06
閱讀 2861·2019-08-23 14:41