Object常用方法总结

1.Object.assign()

-该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性(不拷贝原型上的属性),Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。同名属性会替换.Object.assign只能进行值的复制,如果要复制的值是一个取值函数,那么将求值后再复制.Object.assign可以用来处理数组,但是会把数组视为对象。

      /* 对象 */
      function Person(name) {
          this.name = name
      };
      Person.prototype.country = 'china';
      let  p = new Person("张三");
      p.age = 29;
      const obj = { name: 'zhang' };
      Object.assign(obj, p)
      console.log(obj);//{name: '张三', age: 29} name被覆盖 原型上面的不拷贝

      /* 数组 */
      let arr = [4,5,6,7,8]
      Object.assign(arr,[1,2,3])  // 把数组当作对象来处理
      console.log(arr);  //[1, 2, 3, 7, 8]

2. Object.freeze()

-该方法可以用来冻结一个对象, 冻结后的对象不会在被修改,不能对这个对象进行添加新属性, 不能删除已有属性, 不能修改该对象已有属性的可枚举性,可配置性, 可写性. 此外冻结一个对象后该对象的原型也不能进行修改. freeze() 返回和传入的参数相同

        let obj = {
            name:"张三",
            age:18
        }
        Object.freeze(obj)
        delete obj.age
        obj.id="001"
        obj.name="李四"
        console.log(obj);//{name: '张三', age: 18}
posted on 2022-01-20 14:32  文仲玉  阅读(59)  评论(0)    收藏  举报