JavaScript中Object的方法汇总,你都见过吗?

120 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

1. assign()

  • 该方法用于将一个或多个对象汇总到目标对象中(会改变原对象
  • 语法Object.assign(target,...source)
  • 参数

target:目标对象(最终返回的即是修改后的该对象)

source:源对象,即将源对象汇总到目标对象中,如果目标对象与源对象中的属性冲突,则后面的覆盖前面的

  • 返回值:修改过后的目标对象

2. creat()

  • 该方法用于创建一个新对象,并且指定其原型对象
  • 语法Object.creat(proto[,propertiesObject])
  • 参数

proto:指定的原型对象,即新对象的__proto__属性将指向proto

propertiesObject(可选):这个参数将会为新对象添加上其自身的属性

  • 返回值:一个新创建的对象,拥有你所指定的原型对象及属性

3. defineProperty()

  • 该方法用于在一个对象的身上新定义一个属性或修改一个现有的属性
  • 语法Object.defineProperty(obj, prop, descriptor)
  • 参数

obj:你需要修改的对象

prop:你需要新增或者修改的属性

descriptor:你要定义或修改的属性描述符

这里的属性描述符也是决定该方法与直接obj.prop=value的方式不同的主要因素,该属性描述符是一个对象的形式,对象中包含以下属性:

configurable: 只有当该属性的configurable被设置为true时,该属性描述符才能够被修改或删除

enumerable: 只有当该属性的enumerable被设置为true时,该属性才会出现在对象的枚举属性中

value: 该属性所对应的属性值

writable: 只有当该属性的writable被设置为true时,value才能被赋值运算符修改

get: 其值为一个getter函数,即当用户访问该属性时会调用该函数

set: 其值为一个setter函数,即当用户设置该属性时会调用该函数

  • 返回值:传入方法中进行修改的对象

4. defineProperties()

  • 该方法用于在一个对象的身上新定义或修改属性
  • 语法Object.defineProperties(obj,props)
  • 参数

obj:需要修改的对象

props:由多个prop和descriptor构成的对象,具体可参考defineProperty()方法的参数

  • 返回值:传入方法中进行修改的对象

5. entries()

  • 该方法返回一个所传参数对象身上可枚举属性的键值对数组
  • 语法Object.entries(obj)
  • 参数:希望返回可枚举属性键值对的对象
  • 返回值:可枚举属性键值对的数组

6. freeze()

  • 该方法,顾名思义可将一个对象冻结,当一个对象被冻结时,其身上的所有属性都不能够以任何一种方式进行增加、修改或删除
  • 语法Object.freeze(obj)
  • 参数:需要冻结的对象
  • 返回值:被冻结的对象

7. fromEntries()

  • 该方法用于将一个键值对列表转化为对象(entries方法的反向)
  • 语法Object.fromEntries(iterable)
  • 参数:键值对列表
  • 返回值:一个新对象,其中的属性由列表的键值对转化而来

8. getOwnPropertyDescriptor()

  • 该方法用于返回对象自身一个属性的属性描述符
  • 语法Object.getOwnPropertyDescriptor(obj,prop)
  • 参数

obj:需要查找的目标对象

prop:需要获取描述符的属性名称

  • 返回值:属性存在时返回对应的属性描述符,否则返回undefined

9. getOwnPropertyDescriptors()

  • 该方法用于获取对象自身所有属性的属性描述符
  • 语法Object.getOwnPropertyDescriptors(obj)
  • 参数:一个对象
  • 返回值:所有属性的描述符组成的一个对象,如果对象身上不存在属性,则返回一个空对象

10. getOwnPropertyNames()

  • 该方法用于返回对象所有自身属性的属性名
  • 语法Object.getOwnPropertyNames(obj)
  • 参数:一个对象
  • 返回值:一个数组,数组里面包含了对象所有自身属性的属性名

11. getOwnPropertySymbols()

  • 该方法用于返回一个对象身上所有Symbol属性的数组
  • 语法Object.getOwnPropertySymbols(obj)
  • 参数:一个对象
  • 返回值:一个数组,数组里面包含了对象身上的所有Symbol属性

12. getPrototypeOf()

  • 该方法用于获取指定对象的原型对象
  • 语法Object.getPrototypeOf(obj)
  • 参数:一个对象
  • 返回值:所传对象的原型

13. hasOwnProperty()

  • 该方法用于判断对象身上是否含有指定的属性
  • 语法obj.haOwnProperty(prop)
  • 参数:要进行判断的属性名
  • 返回值:布尔值,返回true时代表对象中含有该属性

14. is()

  • 该方法用于判断两个值是否为同一个值
  • 语法Object.is(value1,value2)
  • 参数:进行比较的两个值
  • 返回值:布尔值,返回true时代表两个值为同一个值

15. isExtensible()

  • 该方法用于判断一个对象是否可扩展,可扩展的意思是能否在其身上增添新属性
  • 语法Object.isExtensible(obj)
  • 参数:被检测的对象
  • 返回值:布尔值,返回true时代表该对象可扩展

16. isFrozen()

  • 该方法顾名思义用于判断一个对象是否被冻结
  • 语法Object.isFrozen(obj)
  • 参数:被检测的对象
  • 返回值:布尔值,返回true时代表该对象被冻结

17. isPrototypeOf()

  • 该方法用于判断一个对象obj1是否在另一个对象obj2的原型链上
  • 语法obj1.isPrototypeOf(obj2)
  • 参数:一个对象
  • 返回值:布尔值,返回true时代表调用该方法的对象在指定对象的原型链上

18. isSealed()

  • 该方法用于判断一个对象是否被密封,对于密封对象MDN上的解释是:不可扩展的,且所有自身属性都不可配置且因此不可删除(但不一定不可写)的对象
  • 语法Object.isSealed(obj)
  • 参数:被检查的对象
  • 返回值:布尔值,返回true时代表该对象被密封

19. keys()

  • 该方法用于获得一个对象身上可枚举属性组成的数组
  • 语法Object.keys(obj)
  • 参数:一个对象
  • 返回值:一个数组,数组内包含了对象的所有可枚举属性

20. preventExtensions()

  • 该方法用于让一个对象变得不可扩展,即无法增添新属性
  • 语法Object.preventExtensions(obj)
  • 参数:一个对象
  • 返回值:被设置为不可扩展的对象

21. propertyIsEnumerable()

  • 该方法用于判断对象中指定的属性是否可枚举
  • 语法obj.propertyIsEnumerable(prop)
  • 参数:需要测试的属性名
  • 返回值:布尔值,返回true时代表该属性可枚举

22. seal()

  • 该方法用于密封一个对象,不可增添新属性,并且原来属性的配置不可进行修改
  • 语法Object.seal(obj)
  • 参数:一个对象
  • 返回值:被密封的对象

23. setPrototypeOf()

  • 该方法用于设置指定对象的原型对象
  • 语法Object.setPrototypeOf(obj1,obj2)
  • 参数

obj1:被设置原型的对象

obj2:对象的新原型

24. toLocaleString()

  • 该方法用于将生成对象的字符串表示
  • 语法obj.toLocaleString()
  • 返回值:表示对象的字符串

25. toString()

  • 该方法用于生成代表指定对象的字符串
  • 语法obj.toString()
  • 返回值:表示对象的字符串

26. valueOf()

  • 该方法用于返回指定对象的原始值
  • 语法obj.valueOf()
  • 返回值:该对象的原始值

27. values()

  • 该方法用于获取指定对象自身所有属性值组成的数组
  • 语法Object.values(obj)
  • 参数:一个对象
  • 返回值:一个数组,数组中包含了对象身上的所有可枚举属性值