一、属性简写数组
ES6容许直接写入变量和函数,做为对象的属性和方法,这时,当对象属性名与属性值名(注意:此时属性值用一个变量代替)相同时能够简写;函数
var name = 'zhangsan'; var user = {name}; //等同于 var user = {name:name}
二、方法简写spa
//对象方法 ES5 写法 var user = { sayName:function(){ ... } } //ES6写法 var user = { sayName(){ ... } }
三、属性表达式prototype
ES6容许字面量定义对象时,能够把表达式放在括号内code
let flag = 'key'; let obj = {[flag]:true,['a'+'bc':123]}; /// obj = {key:true,abc:123}
四、对象方法的 name 属性,返回函数名对象
const person = { sayName() {}}; console.log(person.sayName.name);// "sayName"
五、Object.is() 同值相等,与 ‘===’相似,与之不一样之处在于:+0不等于-0,NaN等于自身blog
console.log(Object.is(NaN,NaN));// true
六、Object. setPrototypeOf(obj,prototype) ;继承
用来设置一个对象的prototype对象,返回参数对象自己。它是 ES6 正式推荐的设置 原型对象的方法。该方法等同以下写法:get
function (obj, proto) { obj.__proto__ = proto; return obj; }
七、Object. getPrototypeOf(obj)原型
用于读取一个对象的原型对象
八、遍历对象
①Object.keys(obj),返回一个数组,成员是参数对象自身的(不含继承的)全部可遍历(enumerable)属性的键名
var obj = { name:'zjl', age:19, gender:'男' } console.log(Object.keys(obj)) //[ 'name', 'age', 'gender' ]
②Object.values(obj),返回一个数组,成员是参数对象自身的(不含继承的)全部可遍历(enumerable) 属性的键值
var obj = { name:'zjl', age:19, gender:'男' } console.log(Object.values(obj)) //[ 'zjl', 19, '男' ]
③Object. entries(obj) 返回一个数组,成员是参数对象自身的(不含继承的)全部可遍历(enumerable) 属性的键值对数组。
var obj = { name:'zjl', age:19, gender:'男' } console.log(Object.entries(obj)) //[ [ 'name', 'zjl' ], [ 'age', 19 ], [ 'gender', '男' ] ]
九、Object.assign(),用于对象的合并,将源对象(source)的全部可枚举属性,复制到目标对象(target )。
Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,若是源对象某个属 性的值是对象,那么目标对象拷贝获得的是这个对象的引用。
let obj = { name:'hah', friends:[], count:{} } let obj3 = Object.assign({},obj); console.log(obj3 === obj); //false console.log(obj3.friends === obj.friends); // true 浅复制 console.log(obj3.count === obj.count) //true 浅复制