entries()
对键值对遍历,返回的是一个键值对数组
Object.entries(obj)
let obj = {
name: 'kaolin',
age: 18,
birthday: '1998-05-20'
}
console.log(Object.entries(obj));
keys()
对键名遍历,返回的是一个key组成的数组
Object.keys(obj)
values()
对键值遍历,返回的是一个键值组成的数组
Object.values(obj)
assign()
多个对象拼接最后返回一个对象
Object.assign(obj1,obj2,boj3)
let obj = {
name: 'kaolin',
age: 18,
birthday: '1998-05-20'
}
console.log(Object.assign({},obj,{school: 'university'}));
create()
用指定的原型对象和属性创建一个新对象。新对象的隐式原型指向原型对象,但是改变新对象的值时不会
改变原型对象的值
let obj = {
name: 'kaolin',
age: 18,
birthday: '1998-05-20'
}
let obj1 = Object.create(obj)
obj1.age = 19
console.log(obj.age); //18
console.log(obj1.age); //19
defineProperty()
直接在对象上定义新属性,或修改对象上的现有属性,然后返回对象。
Obeject.defineProperty(obj, 'prop', {
value: '1' //属性值
enumerable: false, //是否可枚举,如果为false,则在遍历的时候获取不到改属性
configurable: false, //是否可删除,如果为false,则不能删除该属性
writable: false, //是否可读写,如果为false,则不能修改该属性
})
let obj = {
name: 'kaolin',
age: 18,
birthday: '1998-05-20'
}
let obj1 = Object.defineProperty(obj, 'sex', {
value: '男',
configurable: false,
enumerable: false,
writable: false
})
console.log(Object.entries(obj1))
因为设置了enumerable:false,所以sex属性不可以被枚举到
getOwnPropertyNames()
返回一个数组,其中包含给定对象自己的所有可枚举和不可枚举属性的名称。
let obj = {
name: 'kaolin',
age: 18,
birthday: '1998-05-20'
}
let obj1 = Object.defineProperty(obj, 'sex', {
value: '男',
configurable: false,
enumerable: false,
writable: false
})
console.log(Object.getOwnPropertyNames(obj1))