Javascript-Object
好好學習,天天向下!
js中的一些內置方法還是挺好用的,使用它們有時候會節省我們很多時間,還有減少代碼量
一、Object.keys(obj)
獲取一個對象的key值,但是參數obj必須是可枚舉的對象,他會返回一個包含對象自身的所有可枚舉屬性值的數組。
let obj = {
a: 1,
b: 2,
c: 3,
d: 4,
e: {
a: 1,
b: 2
},
abc: 123
};
let keys = Object.keys(obj);
console.log(keys);//["a", "b", "c", "d", "e", "abc"]
二、Object.values(obj)
獲取一個對象value值,同樣參數obj也必須是可枚舉的對象,他會返回一個包含對象自身的所有可枚舉屬性值的數組。
let values = Object.values(obj);
console.log(values);//[1, 2, 3, 4, {…}, 123]
注意: 上面兩個方法所返回的數組和你去for...in
的值的順序是一樣的,所以可以放心使用
三、Object.assign(target, …sources)
對對象進行深拷貝( 僅適用於第一層 ),下面給出兩個例子進行對比
一般的對象賦值(淺拷貝)
let target = {};
let sources = {
A: 1,
B: 2
};
target = sources;
console.log(target, sources);//{A: 1, B: 2} {A: 1, B: 2}
sources.B = 3;
target.A = 4;
console.log(target, sources);//{A: 4, B: 3} {A: 4, B: 3}
target = {};
sources = {
A: 1,
B: 2
};
target和sources已經緊緊的綁在了一起,不管改變哪一個另一個對象都會隨之改變
使用Object.assign(target, …sources)進行深拷貝
target = {};
sources = {
A: 1,
B: 2
};
Object.assign(target, sources);
console.log(target, sources);//{A: 1, B: 2} {A: 1, B: 2}
sources.B = 3;
target.A = 4;
console.log(target, sources);//{A: 4, B: 2} {A: 1, B: 3}
可見target中的元素並不會隨着sources中元素的改變而改變,反之亦然