關(guān)鍵詞:對象擴(kuò)展
return的返回值只能是一個。我們之前在函數(shù)中返回一個對象的時候是這么做的
function fn(x,y) {
x++;
y++;
return{
x:x,
y:y
}
}
console.log(fn(1,2));
// ES6
function fn1(x,y) {
x++;
y++;
return{x,y}
}
console.log(fn1(1,2));
ES6中我們可以玩的花樣更多了
var sex = '御姐';
var person = {
name:'趙無垢',
sex:'摳腳大漢',
[sex]:'蘿莉',
['get'+'name'](){
return this.name;
}
};
console.log(sex); // 御姐
console.log(person.getname()); // 趙無垢
console.log(person[sex]); // 蘿莉
console.log(person.sex); // 摳腳大漢
Object.is()
真是要上天,我們之前熟悉的一些語法規(guī)則,用了這個方法可能要變天了
console.log(0 === -0); // TRUE
console.log(NaN === NaN); //FALSE
console.log(Object.is(0,-0)); // FALSE
console.log(Object.is(NaN,NaN)); //TRUE
Object.assign()
語法:Object.assign( '組合’,‘被組合’,‘被組合’ ...)
沒錯,現(xiàn)在對象都可以合并了
var obj1 = {
age:30,
sex:'男',
};
var obj2 = {
name:'王者小弟'
};
var obj3 = {
name:'耶和華',
range:'白金',
scope:'艾歐尼亞'
}
Object.assign(obj1,obj2,obj3);
console.log(obj1);
Object.assign(obj1,obj3,obj2);
console.log(obj1);
var Cat = function(name){
this.name = name;
};
Proxy()
var obj = {
a:1,
b:2
};
var p1 = new Proxy(obj,{
get(obj,attr){ //當(dāng)屬性值訪問時觸發(fā)
console.log(obj,attr)
return obj[attr];
},
set(obj,attr,value){ //當(dāng)屬性值修改時觸發(fā)
console.log(obj,attr,value);
obj[attr] = value;
}
})
console.log(p1.b); // 2
p1.a = 10;
console.log(p1.a); // 10
// 監(jiān)控對象的變化,一旦發(fā)生變化就會觸發(fā)回調(diào)函數(shù)
// 無效
console.log(Object.keys(obj));
console.log(Reflect.ownKeys(obj));