对象常用的属性方法

113 阅读2分钟

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

参考:www.w3school.com.cn/js/js_objec…

developer.mozilla.org/en-US/docs/…