1.1 对象字面量,如果你想在对象里添加跟变量名一样的属性,并且属性的值就是变量表示的值就可以直接在对象里加上这些属性
let name = 'yrx';
let age = 22;
let getName = function(){
console.log(this.name);
}
let person = {
name,
age,
getName
}
person.getName();
// yrx
1.2 Object.is,对比两个值是否相等
console.log(Object.is(NaN,NaN));
// true
1.3 Object.assign,把多个对象的属性复制到一个对象中,第一个参数是复制的对象,从第二个参数开始往后,都是复制的源对象
var nameObj = { name:'yrx' };
var ageObj = { age:22 };
var obj = {};
Object.assign(obj,nameObj,ageObj);
console.log(obj);
//克隆对象
function clone (obj) {
return Object.assign({}, obj);
}
// { name: 'yrx', age: 22 }
1.4 Object.setPrototypeOf,将一个指定的对象的原型设置为另一个对象或者null
var obj1 = {name:'yrx'};
var obj2 = {name:'hhs'};
var obj = {};
Object.setPrototypeOf(obj,obj1);
console.log(obj.name);
console.log(Object.getPrototypeOf(obj));
Object.setPrototypeOf(obj,obj2);
console.log(obj.name);
console.log(Object.getPrototypeOf(obj));
/*
yrx
{ name: 'yrx' }
hhs
{ name: 'hhs' }
*/
1.5 proto,直接在对象表达式中设置prototype
var obj1 = {name:'yrx'};
var obj3 = {
__proto__:obj1
}
console.log(obj3.name);
console.log(Object.getPrototypeOf(obj3));
/*
yrx
{ name: 'yrx' }
*/
1.6 super,通过super可以调用prototype上的属性或方法
let person ={
eat(){
return 'yrx';
}
}
let student = {
__proto__:person,
eat(){
return super.eat()+' hhs'
}
}
console.log(student.eat());
// yrx hhs
个人博客地址:https://xunbie.com 寻别-个人博客