摘要:之運(yùn)算符運(yùn)算符創(chuàng)建一個(gè)用戶定義的對(duì)象類型的實(shí)例或具有構(gòu)造函數(shù)的內(nèi)置對(duì)象的實(shí)例。使用指定的參數(shù)調(diào)用構(gòu)造函數(shù),并將綁定到新創(chuàng)建的對(duì)象。
JavaScript之new運(yùn)算符
new運(yùn)算符創(chuàng)建一個(gè)用戶定義的對(duì)象類型的實(shí)例或具有構(gòu)造函數(shù)的內(nèi)置對(duì)象的實(shí)例。new關(guān)鍵字會(huì)進(jìn)行如下的操作:
1. 創(chuàng)建一個(gè)空的簡(jiǎn)單JavaScript對(duì)象(即{}); 2. 鏈接該對(duì)象(即設(shè)置該對(duì)象的構(gòu)造函數(shù))到另一個(gè)對(duì)象 ; 3. 將步驟1新創(chuàng)建的對(duì)象作為this的上下文 ; 4. 如果該函數(shù)沒(méi)有返回對(duì)象,則返回this。
var cat = new Animal("cat"); new Animal("cat") = function () { var obj = {}; // 第1步 obj.__proto__ = Animal.prototype; // 第2步 var result = Animal.call(obj,"cat"); // 第3步:obj.Animal("cat") return typeof result === "object"? result : obj; // 第4步 }
function Car(make, model, year) { this.make = make; this.model = model; this.year = year; } var car1 = new Car("Eagle", "Talon TSi", 1993); console.log(car1.make);// expected output: "Eagle"
創(chuàng)建一個(gè)用戶自定義的對(duì)象需要兩步:
1. 通過(guò)編寫(xiě)函數(shù)來(lái)定義對(duì)象類型。 2. 通過(guò)new來(lái)創(chuàng)建對(duì)象實(shí)例。
創(chuàng)建一個(gè)對(duì)象類型,需要?jiǎng)?chuàng)建一個(gè)指定其名稱和屬性的函數(shù);對(duì)象的屬性可以指向其他對(duì)象,看下面的例子:
當(dāng)代碼new Foo(…)執(zhí)行時(shí),會(huì)發(fā)生以下事情:
1. 一個(gè)繼承自Foo.prototype的新對(duì)象被創(chuàng)建。 2. 使用指定的參數(shù)調(diào)用構(gòu)造函數(shù)Foo,并將 this綁定到新創(chuàng)建的對(duì)象。newFoo等同于new Foo(),也就是沒(méi)有指定參數(shù)列表,F(xiàn)oo不帶任何參數(shù)調(diào)用的情況。 3. 由構(gòu)造函數(shù)返回的對(duì)象就是new表達(dá)式的結(jié)果。如果構(gòu)造函數(shù)沒(méi)有顯式返回一個(gè)對(duì)象,則使用步驟1創(chuàng)建的對(duì)象。(一般情況下,構(gòu)造函數(shù)不返回值,但是用戶可以選擇主動(dòng)返回對(duì)象,來(lái)覆蓋正常的對(duì)象創(chuàng)建步驟) 你始終可以對(duì)已定義的對(duì)象添加新的屬性。例如,car1.color = "black"語(yǔ)句給car1添加了一個(gè)新的屬性color,并給這個(gè)屬性賦值 "black"。但是,這不會(huì)影響任何其他對(duì)象。要將新屬性添加到相同類型的所有對(duì)象,你必須將該屬性添加到Car對(duì)象類型的定義中。 你可以使用Function.prototype屬性將共享屬性添加到以前定義的對(duì)象類型。這定義了一個(gè)由該函數(shù)創(chuàng)建的所有對(duì)象共享的屬性,而不僅僅是對(duì)象類型的其中一個(gè)實(shí)例。下面的代碼將一個(gè)值為null的color屬性添加到car類型的所有對(duì)象,然后僅在實(shí)例對(duì)象car1中用字符串 "black" 覆蓋該值。詳見(jiàn) [prototype](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype) 。
function Car() {} car1 = new Car(); car2 = new Car(); console.log(car1.color); // undefined Car.prototype.color = "original color"; console.log(car1.color); // original color car1.color = "black"; console.log(car1.color); // black console.log(car1.__proto__.color) //original color console.log(car2.__proto__.color) //original color console.log(car1.color) // black console.log(car2.color) // original color
推薦閱讀:
JavaScript之call()理解
我是Cloudy,年輕的前端攻城獅一枚,愛(ài)專研,愛(ài)技術(shù),愛(ài)分享。
個(gè)人筆記,整理不易,感謝閱讀、點(diǎn)贊和收藏。
文章有任何問(wèn)題歡迎大家指出,也歡迎大家一起交流前端各種問(wèn)題!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/105117.html
摘要:操作符的兩種形態(tài)其實(shí)在的操作符描述中,語(yǔ)法是你會(huì)發(fā)現(xiàn)被中括號(hào)所包圍也就意味著可缺省,因此,如果對(duì)于不含參數(shù)的構(gòu)造函數(shù)而言與二者并無(wú)區(qū)別,那我們接著思考一個(gè)問(wèn)題,對(duì)于前面返回函數(shù)的而言,當(dāng)?shù)臅r(shí)候?yàn)槭裁磮?zhí)行的是而不是呢。 首先歡迎大家關(guān)注我的Github博客,也算是對(duì)我的一點(diǎn)鼓勵(lì),畢竟寫(xiě)東西沒(méi)法變現(xiàn),堅(jiān)持下去也是靠的是自己的熱情和大家的鼓勵(lì)。各位讀者的Star是激勵(lì)我前進(jìn)的動(dòng)力,請(qǐng)不要吝...
摘要:新增了第七種類型的值數(shù)值字符串布爾值對(duì)象數(shù)據(jù)類型判斷有三種方法,可以判斷一個(gè)值的類型運(yùn)算符運(yùn)算符方法運(yùn)算符運(yùn)算符可以返回一個(gè)值的數(shù)據(jù)類型。運(yùn)算符運(yùn)算符返回一個(gè)布爾值,表示對(duì)象是否為某個(gè)構(gòu)造函數(shù)的實(shí)例。 1.數(shù)據(jù)類型 JavaScript一共有六種數(shù)據(jù)類型。(ES6新增了第七種Symbol類型的值) 數(shù)值(Number) 字符串(String) 布爾值(boolean) undefin...
摘要:數(shù)據(jù)類型原始類型類型實(shí)為數(shù)字不區(qū)分整數(shù)和浮點(diǎn)類型整數(shù)類型包括負(fù)整數(shù),和正整數(shù)浮點(diǎn)類型表示小數(shù)類型整數(shù)和浮點(diǎn)數(shù)小數(shù)或并不區(qū)分整數(shù)與浮點(diǎn)數(shù)變量的定義并初始化字面量或直接量定義數(shù)字值浮點(diǎn)類型是只該數(shù)值包含整數(shù)部分,小數(shù)部分,小數(shù)點(diǎn)和小數(shù)部分浮點(diǎn)類 JS(JavaScript) 數(shù)據(jù)類型; 1.原始類型; number類型; 實(shí)為數(shù)字JS不區(qū)分整數(shù)和浮點(diǎn)類型;整數(shù)類型;包括負(fù)整數(shù),0和正...
摘要:判斷變量類型數(shù)據(jù)類型種操作符可能返回的值如下注意的能力有限,其對(duì)于類型返回的都是使用場(chǎng)景區(qū)分對(duì)象和原始類型要區(qū)分一種對(duì)象類型和另一種對(duì)象類型可以使用運(yùn)算符或?qū)ο髮傩赃\(yùn)算符用法左邊的運(yùn)算數(shù)是一個(gè)右邊運(yùn)算數(shù)是對(duì)象類的名字或者構(gòu)造函數(shù)返回或如果是 判斷變量類型 javaSctipt數(shù)據(jù)類型7種: Number, String, Boolean, Null, Undefined, Object...
摘要:數(shù)據(jù)類型數(shù)據(jù)類型表示數(shù)值的類型類型的分類原始類型類型數(shù)字類型類型分為整數(shù)和浮點(diǎn)數(shù)整數(shù)正整數(shù)負(fù)整數(shù)變量為數(shù)字類型整數(shù)顯示浮點(diǎn)數(shù)小數(shù)變量為數(shù)字類型浮點(diǎn)數(shù)顯示浮點(diǎn)數(shù)在小數(shù)點(diǎn)前面如果沒(méi)有數(shù)字,會(huì)被默認(rèn)為在小數(shù)點(diǎn)前的數(shù)字為比如會(huì)顯示浮點(diǎn)數(shù)的 數(shù)據(jù)類型 數(shù)據(jù)類型 - 表示數(shù)值的類型 類型的分類 原始類型 number類型(數(shù)字類型) number類型分為整數(shù)和浮點(diǎn)數(shù) 整數(shù) - 正整數(shù) 、0 、負(fù)...
閱讀 1644·2023-04-25 18:56
閱讀 1567·2021-09-29 09:34
閱讀 1783·2021-09-22 15:51
閱讀 3583·2021-09-14 18:03
閱讀 1243·2021-07-23 17:54
閱讀 2115·2019-08-29 18:38
閱讀 2966·2019-08-29 12:38
閱讀 672·2019-08-26 13:41