ES6新增方法
前言:在es6中,为了是使某些任务更易完成,在全局Object对象上引入了一些新方法。
1.Object.is()
该方法是用来弥补全等运算符(===)的不确定性运算,该方法接受两个参数,如果两个类型相同且具有相同的值,则返回true。
console.log(+0 == -0); // true
console.log(+0 === -0); // true
console.log(Object.is(+0, -0)); // false
console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
console.log(Object.is(NaN, NaN)); // true
console.log(5 == "5"); // true
console.log(5 === "5"); // false
console.log(Object.is(5, "5"); // false
Object.is()和 ===运算符大部分情况下相同,唯一的区别在于 +0 , -0 被认为不相等,NaN和NaN认为等价。
2.Object.assign()
该方法接受一个接收对象和任意数量的源对象,返回接收对象。
var receiver = {};
Object.assign(receiver,
{
name: "zhou",
age: 24
}
);
console.log(receive.name) // zhou
console,log(receiver,age) // 24
3.Object.setPrototypeOf()
该方法可以改变任意指定对象的原型,它接受两个参数:被改变原型的对象和替代第一个参数原型的对象。
let person = {
getGreeting() {
return "hello";
}
}
let dog = {
getGreeting() {
return "Woof";
}
}
let friend = Object.create(person); // {} 返回的是一个空对象,这个对象以person为原型
console.log(friend.getGreeting()); // "hello"
consloe.log(Object.getPrototypeOf(friend) === person) // true
//将原型设置为person
Object.setPrototypeOf(friend, dog);
console.log(friend.getGreeting()); // "Woof"
consloe.log(Object.getPrototypeOf(friend) === person) // false
consloe.log(Object.getPrototypeOf(friend) === dog) // true