ES6新增Api
对象Api扩展
1、Object.is(),判断两个值是否相等
Object.is(-1,+1) //false 不仅判断值还判断符号
Object.is(NaN,NaN) //ture
Object.assign()
(1)两个参数时,实现的是对象的复制、拷贝
返回值:返回第一个参数
let obj = {
}
let obj1 = {
name:"zhangsan",
age:19
}
let res = Object.assign(obj,obj1)
console.log(res,obj); //{ name: 'zhangsan', age: 19 } { name: 'zhangsan', age: 19 }
console.log(res===obj); //true
Object.assign()方法实现的是半深拷贝,半深拷贝指的是被复制的对象里面有引用数据类型,实现的就是半深拷贝;而深拷贝指的是被复制的对象里是基本数据类型,实现的就是深拷贝。
let obj = {
}
let obj1 = {
name:"zhangsan",
age:19,
class:{
number:'2022'
}
}
let res = Object.assign(obj,obj1)
obj.name = 'lisi'
obj.class.number = '12345'
console.log(obj,obj1); //{ name: 'lisi', age: 19, class: { number: '12345' } } { name: 'zhangsan', age: 19, class: { number: '12345' } }
(2)三个参数时,表示合并对象,把后两个对象合并到第一个对象,并返回第一个对象
let obj = {
}
let obj1 = {
name:"zhangsan",age:10}
let obj2 = {
gender:'male'}
let res = Object.assign(obj,obj1,obj2)
console.log(res,obj); //{ name: 'zhangsan', age: 10, gender: 'male' } { name: 'zhangsan', age: 10, gender: 'male' }
console.log(res===obj); //true
3、获取原型对象的方法
(1)obj.proto
(2)obj.constructor.prototype
(3)Object.getPrototypeOf(obj)
let obj = {
name:"zhangsan"
}
console.log(obj.__proto__); //[Object: null prototype] {}
console.log(obj.constructor.prototype); //[Object: null prototype] {}
console.log(Object.getPrototypeOf(obj)); //[Object: null prototype] {