关键词:对象扩展
return的返回值只能是一个。我们之前在函数中返回一个对象的时候是这么做的
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()
真是要上天,我们之前熟悉的一些语法规则,用了这个方法可能要变天了
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( '组合’,‘被组合’,‘被组合’ ...)
没错,现在对象都可以合并了
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){ //当属性值访问时触发
console.log(obj,attr)
return obj[attr];
},
set(obj,attr,value){ //当属性值修改时触发
console.log(obj,attr,value);
obj[attr] = value;
}
})
console.log(p1.b); // 2
p1.a = 10;
console.log(p1.a); // 10
// 监控对象的变化,一旦发生变化就会触发回调函数
// 无效
console.log(Object.keys(obj));
console.log(Reflect.ownKeys(obj));