我的javascript权威指南-10

来源:互联网 发布:程序员必备手机应用 编辑:程序博客网 时间:2024/05/20 09:08

Object的一些方法

1. Object.defineProperty()
  1. 定义:在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
  2. 语法:Object.defineProperty(obj, prop, descriptor)
  3. 参数:
    • obj:要在其上定义属性的对象。
    • prop:要定义或修改的属性的名称。
    • descriptor:将被定义或修改的属性描述符。
  4. 返回值:被传递给函数的对象。
2. Object.seal()
  1. 定义:让一个对象密封,并返回被密封后的对象。密封对象将会阻止向对象添加新的属性,并且会将所有已有属性的可配置性(configurable)置为不可配置(false),即不可修改属性的描述或删除属性。但是可写性描述(writable)为可写(true)的属性的值仍然可以被修改。
  2. 语法:Object.seal(obj)
  3. 参数:obj:将要被密封的对象
3. Object.freeze()
  1. 定义:冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象。
  2. 语法:Object.freeze(obj)
  3. 参数:要被冻结的对象。
  4. 返回值:被冻结的对象。
4. Object.entries()
  1. 定义:返回一个给定对象==自身可枚举属性的键值对数组==,其排列与使用 for…in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。
  2. 语法:Object.entries(obj)
  3. 参数:可以返回其可枚举属性的键值对的对象。
  4. 返回值:给定对象自身可枚举属性的键值对数组。
5. Object.keys()
  1. 定义:会返回一个由一个给定对象的==自身可枚举属性组成的数组==,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in 循环还会枚举其原型链上的属性)。
  2. 语法:Object.keys(obj)
  3. 参数:obj:要返回其枚举自身属性的对象。
  4. 返回值:一个表示给定对象的所有可枚举属性的字符串数组。
6. Object.values()
  1. 定义:返回一个给定对象==自己的所有可枚举属性值的数组==,值的顺序与使用for…in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。
  2. 语法:Object.values(obj)
  3. 参数:obj:被返回可枚举属性值的对象。
  4. 返回值:一个包含对象自身的所有可枚举属性键值的数组。
7. Object.getOwnPropertyDescriptor()
  1. 定义:返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)
  2. 语法:Object.getOwnPropertyDescriptor(obj, prop)
  3. 参数:
    • obj:需要查找的目标对象
    • prop:目标对象内属性名称(String类型)
  4. 返回值:如果指定的属性存在于对象上,则返回其属性描述符对象(property descriptor),否则返回 undefined。
8. Object.getOwnPropertyNames()
  1. 定义:返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
  2. 语法:Object.getOwnPropertyNames(obj)
  3. 参数:obj:一个对象,其自身的可枚举和不可枚举属性的名称被返回。
  4. 返回值:在给定对象上找到的属性对应的字符串数组。
原创粉丝点击