您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)JavaScript 對象創(chuàng)建的3種方法分別是什么,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
前言:
在 JavaScript
中,對象是一組有屬性名和屬性值組成的無序集合,對象的創(chuàng)建可以通過對象字面量、new
關(guān)鍵字 和Object.create()
函數(shù)來創(chuàng)建。
let obj = {} // 空對象 let obj2 = {a:1, b:2} let obj3 = {" hel": "wold"} // 屬性名如果有空格,可以用字符串字面量作為屬性名
使用 new
關(guān)鍵字后面調(diào)用構(gòu)造函數(shù),創(chuàng)建一個新的對象
let o = new Object(); // 內(nèi)置的構(gòu)造函數(shù) let m = new Math(); let a = new Array(); let d = new Date(); function Person(){ //自定義構(gòu)造函數(shù) } let person = new Person()
let o = Object.create({x:1, y:2}); console.log(o.x+o.y) //3
新對象o 將繼承 {x:1, y:2}
,屬性x和y稱為繼承屬性, 如果傳入的參數(shù)是null
,則這個對象不會繼承任何對象。被繼承的對象又稱之為“原型”。
Object.create(null)
ES2018新增了擴展操作符...,將已有的對象屬性復(fù)制到新的對象中
let foo = {x:1, y:2} let bar = {z:3} let zoo = {...foo, ...bar} console.log(zoo) // {x:1, y:2, z:3}
需要注意的幾點:
擴展操作符只擴展對象的自有屬性,繼承屬性不支持?jǐn)U展
如果擴展對象和被擴展的對象有相同名字的屬性,屬性的值由后面的對象決定
assign
可以把一個對象的屬性復(fù)制到另一個對象, assign
接收兩個或多個參數(shù),第一個參數(shù)為目標(biāo)對象,第二個及后續(xù)參數(shù)為來源對象,函數(shù)將把來源對象的屬性復(fù)制到目標(biāo)對象,并返回目標(biāo)對象。
let foo = {x:1, y:2} let bar = {z:3} let zoo = {} let obj = Object.assign(zoo, foo, bar) console.log(zoo) // {x:1, y:2, z:3} console.log(obj===zoo) // true
另外補充兩個ES6
中新增的對象特性
如果想創(chuàng)建多個變量名和對應(yīng)值組合成的對象,原來需要像傳統(tǒng)對象字面量語法構(gòu)建對象
let x=1, y =2; let o = {x:x, y:y} console.log(o) // {x:1, y:2}
ES6
之后可直接簡寫屬性,省去分號和屬性名
let o2 = {x, y} console.log(o2) // {x:1, y:2}
在對象中定義方法時,ES6
以前需要,定義方法時需要像定義普通屬性一樣,通過函數(shù)表達式定義方法
let point={ x:1, y:2, area: function(){ return this.x*this.y } } console.log(point.area()) //2
而ES6
之后可以省略冒號和function
關(guān)鍵字,以一種簡單的方式來定義對象的方法。
let point2={ x:1, y:2, area(){ return this.x*this.y } } console.log(point2.area()) //2
以上就是JavaScript 對象創(chuàng)建的3種方法分別是什么,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。