对象方法(包含es6)

简介: 对象方法(包含es6)

1.Object.assign(target,source1,source2,...)


方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性。(从后向前覆盖)

Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。同名属性会替换。

Object.assign只能进行值的复制,如果要复制的值是一个取值函数,那么将求值后再复制。

Object.assign可以用来处理数组,但是会把数组视为对象。


2.Object.create(prototype,[propertiesObject])


使用指定的原型对象及其属性去创建一个新的对象


3.Object.defineProperties(obj,props)


通过多个描述符一次性定义多个属性,接收两个参数:要为之添加或修改属性的对象和另一个描述符对象,其属性与要添加过修改的属性一 一对应。

const obj = {}
    Object.defineProperties(obj, {
      a_: {
        value: 1,
        writable: true
      },
      a: {
        get() {
          return a_
        },
        set(newValue) {
          console.log('set劫持')
          this.a_ = newValue
        }
      }
    })
    obj.a = 2


4.Object.defineProperty(obj,prop,descriptor)(详细)


在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。


5.Object.keys(obj)


返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in 循环还会枚举其原型链上的属性)。


6.Object.values()


方法返回一个给定对象自己的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

Object.values会过滤属性名为 Symbol 值的属性。


7.Object.entries()


返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。


8.hasOwnProperty()


判断对象自身属性中是否具有指定的属性。


9.Object.getOwnPropertyNames()


返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。


10.isPrototypeOf()


判断一个对象是否存在于另一个对象的原型链上。


11.Object.setPrototypeOf(obj,prototype)


设置对象的原型对象


12.Object.is()


判断两个值是否相同。

如果下列任何一项成立,则两个值相同:


13.Object.freeze()


冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象。


14.Objec t.isFrozen()


判断一个对象是否被冻结 .


15.Object.preventExtensions()


对象不能再添加新的属性。可修改,删除现有属性,不能添加新属性。


16.Object.getOwnPropertyDescriptor()


取得指定属性的属性描述符,返回一个对象


两个参数:所在的对象和要取得描述符的属性名


17.Object.getOwnPropertyDescriptors()


这个方法实际会在每个自有属性上调用Object.defineProperties()并在一个新对象中返回它们。


一个参数:对象

相关文章
|
6月前
ES6新增语法 对象解构
ECMAScript6引入的对象解构语法允许在一行代码中完成多个赋值操作。例如,从一个包含姓名和年龄的对象中提取属性,传统方法需分别获取,而使用解构赋值可简洁实现相同功能。此外,它支持为未定义的属性设置默认值、对已声明变量的解构赋值(需加括号)、嵌套解构以及在函数参数中直接解构等特性,极大提升了代码的可读性和编写效率。
44 1
ES6新增语法 对象解构
ES6学习(3)模板字符串、简化对象和函数写法
ES6学习(3)模板字符串、简化对象和函数写法
|
存储 JSON PHP
PHPJSON嵌套对象和数组的解析方法
在PHP编程开发中,JSON是一种非常常用的数据格式。它具有简单、轻量和易于解析的特点,非常适合用于数据交换和存储。当我们处理JSON数据时,经常需要解析嵌套的对象和数组,本文将介绍几种解析方法。
118 1
|
前端开发 JavaScript API
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(五)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(五)
|
前端开发
前端学习笔记202306学习笔记第三十八天-Es6-函数形参的结构赋值1
前端学习笔记202306学习笔记第三十八天-Es6-函数形参的结构赋值1
73 0
|
前端开发 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(四)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(四)
|
前端开发 API 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(六)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(六)
|
前端开发 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(二)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(二)
|
前端开发 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(一)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map
|
前端开发 JavaScript 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(三)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(三)