对象的新增方法
对象新增方法
-
Object.is()
Object.is(value1,value2),判断两个值是否相等,与比较运算符“===”基本一致,但解决了“===”中的一些缺点
console.log(Object.is(100, '100')); //false 类型不同 console.log(Object.is({}, {})); //false 指向不同
与恒等“===”的不同:
console.log(+0 === -0); //true console.log(Object.is(+0, -0)); //false
console.log(NaN === NaN); //false console.log(Object.is(NaN, NaN)); //true
-
Object.assign()
Object.assign(目标对象, 源对象),将指定对象合并至目标对象内部,其实就是内容复制,若属性相同,后面的属性值会覆盖之前属性值,若属性不同,则添加至对象。
let obj1 = { name : 'li', age : 100 }; let obj2 = { name : 'wang', age : 200 }; let obj3 = { gender : '男' }; console.log(Object.assign(obj1, obj2, obj3));
console.log(obj1);
![]()
只是内容复制一份给obj1,改变的是obj1,obj2和obj3则自身不变:
console.log(obj2); ![]()
1)如果传入的是非对象内容,则会转换成对象
console.log(Object.assign(obj1,[1,2,3]));
![]()
2)undefined和null无法转成对象,所以如果它们作为参数,就会报错。
- ES6提供了
Object.getPrototypeOf(obj) 获取指定对象原型
Object.setPrototypeOf(obj,prototype) 设置指定对象原型
let obj1 = { fn() { return 'fn1'; } }; let obj2 = { fn() { return 'fn2'; } }; // 创建对象f 以obj1对象为原型 let f = Object.create(obj1); console.log(f.fn()); //fn1 // 判断obj1是否为f的原型 console.log(Object.getPrototypeOf(f) === obj1); //true // 设置f的原型对象为obj2 Object.setPrototypeOf(f, obj2); console.log(f.fn()); //fn2 console.log(Object.getPrototypeOf(f) === obj2); //true
-
super 关键字,用于原型中方法的继承功能。
let obj = { fn() { return "fn"; } }; let f = { fn() { // return "extend!"; // 原型+本身 return super.fn() + " extend!"; } }; // 设置obj为f原型 Object.setPrototypeOf(f, obj); console.log(f.fn()); //fn extend! // 再设置h以f为原型 // h也可以继承到f的原型 let h = Object.create(f); console.log(h.fn()); //fn extend!

浙公网安备 33010602011771号