1.遍历对象for...in
let obj = {
name:'shy',
age:24,
friend:[1,2,3,5],
}
for(let key in obj ){
console.log(obj[key])
}
2.删除对象中的某个属性
let obj = {
name:'shy',
age:24,
friend:[1,2,3,5],
}
delete obj['friend']//会改变原对象
console.log(obj)//{name: 'shy', age: 24}
3.Object.values()对象的属性值转数组
let obj = {
name: 'shy',
age: 24,
friend: [1, 2, 3, 5],
}
console.log(Object.values(obj))//["shy",24, [1, 2, 3, 5]]
4. JSON.stringify() 任何 JavaScript 对象都可以使用 JavaScript 函数 JSON.stringify() 进行字符串化(转换为字符串)
let obj = {
name: 'shy',
friend: [1, 2, 3, 5],
date:new Date(),
age: function () {return 24;},
color:undefined,
task:null,
}
console.log(JSON.stringify(obj)) //{"name":"shy","friend":[1,2,3,5],"date":"2021-11-02T13:00:12.244Z","task":null}
JSON.stringify 不会对函数,undefined,symbol值进行字符串化,在使用拷贝的时候可能会丢值
obj.age = obj.age.toString()//在使用JSON.stringify()之前把函数转为字符串,该属性就可以显示
console.log(JSON.stringify(obj)) //{"name":"shy","friend":[1,2,3,5],"date":"2021-11-02T13:00:12.244Z","age":"function () {return 24;}","task":null}
5.Object.assign() 将所有可枚举自身属性的值从一个或多个源对象复制到目标对象。
let obj = { a: 1, b: 2, c: 3 }
let obj2 = { c: 5, d: 4 }
console.log(Object.assign(obj,obj2)) // {a: 1, b: 2, c: 5, d: 4}
console.log(Object.assign(obj2,obj)) // {c: 5, d: 4, a: 1, b: 2}
6. Object.create() 以现有对象为原型创建对象
let obj = { a: 1, b: 2, c: 3 ,foo:function(){console.log(this.name)}}//shy
let newObj = Object.create(obj);
newObj['name'] = 'shy'
newObj.foo()
7.Object.defineProperty(object, property, descriptor) 添加或更改对象属性
let obj = { a: 1, b: 2, c: 3 }
Object.defineProperty(obj, 'd', { value: 4 })
console.log(obj)//{a: 1, b: 2, c: 3, d: 4}
8.Object.defineProperties(object, descriptors) 添加或更改对象属性
let obj = { a: 1, b: 2, c: 3 }
Object.defineProperties(obj, { 'd':{value:4} })
console.log(obj)//{a: 1, b: 2, c: 3, d: 4}
9.Object.getOwnPropertyDescriptor(object, property) 访问属性
let obj = { a: 1, b: 2, c: 3 }
console.log(Object.getOwnPropertyDescriptor(obj,'a'))//{value: 1, writable: true, enumerable: true, configurable: true}
10.Object.getOwnPropertyNames(object) 以数组返回所有属性
let obj = { a: 1, b: 2, c: 3 }
console.log(Object.getOwnPropertyNames(obj))//["a","b","c"]
11. Object.getPrototypeOf(object) 访问原型
let obj = { a: 1, b: 2, c: 3 }
console.log(Object.getPrototypeOf(obj))
12. Object.keys(object) 以数组返回可枚举属性
let obj = { a: 1, b: 2, c: 3 }
console.log(Object.keys(obj)) // ['a', 'b', 'c']
13.Object.entries(object)返回一个数组,其中包含[key, value]给定对象自己的可枚举字符串属性的所有对。
let obj = { a: 1, b: 2, c: 3 }
for (const [key, value] of Object.entries(obj)) {
console.log(`${key}: ${value}`);
}
14.Object.prototype.hasOwnProperty() 判断该对象是否有某个属性
let obj = { a: 1, b: 2, c: 3 }
console.log(obj.hasOwnProperty('a')) //true
console.log(obj.hasOwnProperty('d')) //false
15.Object.hasOwn(instance,prop)判断该对象是否有某个属性
let obj = { a: 1, b: 2, c: 3 }
console.log(Object.hasOwn(obj,'a')) //true
console.log(Object.hasOwn(obj,'d')) //false