ES5.1中一共有11个内置对象(不包含global),分别时Function, JSON,Error,Date,Boolean,Object,String,Number,Math,RegExp,Array。在ES5.1中前5个没有发生变化,后6个发生了变化。
Object
Object新增了4个方法属性: assign,getOwnPropertySymbls,is和setPrototypeOf。
1.assign
assign可以将一个对象中的属性复制到另一个对象中。assign方法的语法如下:
Object.assign(target, ...,sources);
代码示例:
let p1 = {
name: 'zzh'
};
let p2 = {
age: 18
};
let p3 = {
sex: 'male'
};
Object.assign(p1, p2, p3);
console.log(p1); // { name: 'zzh', age: 18, sex: 'male' }
console.log(p2); // { age: 18 }
console.log(p3); // { sex: 'male' }
2.getOwnPropertySymbols
获取一个对象中所有Symbol类型的属性名。
代码示例:
function Person (name, age) {
let _name = Symbol("name");
let _age = Symbol("age");
this[_name] = name;
this[_age] = age;
}
const p = new Person('zzh', 18);
const symbols = Object.getOwnPropertySymbols(p);
console.log(symbols); // [ Symbol(name), Symbol(age) ]
console.log(p[symbols[0]]); // zzh
- is
判断两个值是否相同,对象先判断内存地址,直接量先判断类型,不同则返回false, 再对比值。
代码示例:
function Person (name, age) {
let _name = Symbol("name");
let _age = Symbol("age");
this[_name] = name;
this[_age] = age;
};
function Student (name, age) {
let _name = Symbol("name");
let _age = Symbol("age");
this[_name] = name;
this[_age] = age;
}
const p = new Person('zzh', 18);
const p1 = new Person('zzh', 18);
const p2 = p;
const s = new Student('zzh', 18);
console.log(Object.is(p, p1)); // false
console.log(Object.is(p, p2)); // true
console.log(O