JavaScript 對象創(chuàng)建的3種方法
前言:
在 JavaScript中,對象是一組有屬性名和屬性值組成的無序集合,對象的創(chuàng)建可以通過對象字面量、new 關(guān)鍵字 和Object.create()函數(shù)來創(chuàng)建。
1、對象字面量
let obj = {} // 空對象
let obj2 = {a:1, b:2}
let obj3 = {" hel": "wold"} // 屬性名如果有空格,可以用字符串字面量作為屬性名
2、new 關(guān)鍵字創(chuàng)建對象
使用 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()
3、使用 Object.create() 創(chuàng)建對象
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)
4、 使用擴展操作符:...
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}
需要注意的幾點:
- 擴展操作符只擴展對象的自有屬性,繼承屬性不支持擴展
- 如果擴展對象和被擴展的對象有相同名字的屬性,屬性的值由后面的對象決定
5、使用Object.assign()方法
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中新增的對象特性
6、簡寫屬性
如果想創(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}
7、簡寫方法
在對象中定義方法時,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
到此這篇關(guān)于JavaScript 對象創(chuàng)建的3種方法的文章就介紹到這了,更多相關(guān)JavaScript 對象創(chuàng)建方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Canvas如何判斷點在形狀內(nèi)及內(nèi)置API性能詳解
這篇文章主要為大家介紹了Canvas如何判斷點在形狀內(nèi)及內(nèi)置API性能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
JavaScript?定時器關(guān)鍵點及使用場景解析
這篇文章主要為大家介紹了JavaScript?定時器關(guān)鍵點及使用場景解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Proxy Facade設(shè)計模式簡化系統(tǒng)訪問的強大工具原理詳解
這篇文章主要為大家介紹了 Proxy Facade設(shè)計模式簡化系統(tǒng)訪問的強大工具原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
JavaScript中使用toLocaleString數(shù)字格式化處理詳解
這篇文章主要為大家介紹了JavaScript中使用toLocaleString數(shù)字格式化處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
JavaScript?Canvas實現(xiàn)兼容IE的兔子發(fā)射爆破動圖特效
這篇文章主要為大家介紹了JavaScript?Canvas實現(xiàn)兼容IE的兔子發(fā)射爆破動圖特效示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01

