JavaScript Object 总结

构造函数

  1. 直接使用大括号构造,如: {key1: value1, key2: value2}

  2. 使用构造函数,如: new Object([value])

    • 如果给定值是 nullundefined,将会创建并返回一个空对象
    • 如果传进去的是一个基本类型的值,则会构造其包装类型的对象
    • 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量保有和源对象相同的引用地址
  • 当以非构造函数形式被调用时,Object 的行为等同于 new Object()

静态方法

  1. Object.assign(target, …sources)
    将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象

  2. Object.create(proto[, propertiesObject])
    使用指定的原型对象创建一个新对象

  3. Object.is(value1, value2)
    比较两个值是否相同。所有 NaN 值都相等,但 +0 和 -0 不相等

  4. Object.defineProperty(obj, prop, descriptor)
    直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象

    const object1 = {};
    
    Object.defineProperty(object1, 'property1', {
      value: 42,
      writable: false
    });
    
    object1.property1 = 77;
    // throws an error in strict mode
    
    console.log(object1.property1);
    // expected output: 42
    
  5. Object.defineProperties(obj, props)
    直接在一个对象上定义新的属性或修改现有属性,并返回该对象

    var obj = {};
    Object.defineProperties(obj, {
      'property1': {
        value: true,
        writable: true
      },
      'property2': {
        value: 'Hello',
        writable: false
      }
      // etc. etc.
    });
    
  6. Object.entries(obj)
    返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)

  7. Object.keys(obj)
    返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致

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

  9. Object.getOwnPropertyDescriptor(obj, prop)
    返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)

  10. Object.getOwnPropertyNames(obj)
    返回一个数组,它包含了指定对象所有的可枚举或不可枚举的属性名

  11. Object.getOwnPropertySymbols(obj)
    返回一个给定对象自身的所有 Symbol 属性的数组

  12. Object.getPrototypeOf(obj)
    返回指定对象的原型对象

  13. Object.setPrototypeOf(obj, prototype)
    设置一个指定的对象的原型 ( 即, 内部[[Prototype]]属性)到另一个对象或 null

    警告: 由于现代 JavaScript 引擎优化属性访问所带来的特性的关系,更改对象的 [[Prototype]]在各个浏览器和 JavaScript 引擎上都是一个很慢的操作。其在更改继承的性能上的影响是微妙而又广泛的,这不仅仅限于 obj.__proto__ = … 语句上的时间花费,而且可能会延伸到任何代码,那些可以访问任何[[Prototype]]已被更改的对象的代码。如果你关心性能,你应该避免设置一个对象的 [[Prototype]]。相反,你应该使用 Object.create()来创建带有你想要的[[Prototype]]的新对象

  14. Object.freeze(obj)
    冻结对象:其他代码不能删除或更改任何属性

  15. Object.isFrozen(obj)
    判断对象是否已经冻结

  16. Object.preventExtensions(obj)
    让一个对象变的不可扩展,也就是永远不能再添加新的属性

  17. Object.isExtensible(obj)
    判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)

  18. Object.seal(obj)
    封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置。当前属性的值只要原来是可写的就可以改变

  19. Object.isSealed(obj)
    判断对象是否已经密封

实例方法

  1. Object.prototype.valueOf()

    返回指定对象的原始值

  2. Object.prototype.toString()

    返回一个表示该对象的字符串

  3. Object.prototype.toLocaleString()

    返回一个该对象的字符串表示。此方法被用于派生对象为了特定语言环境的目的(locale-specific purposes)而重载使用

  4. Object.prototype.hasOwnProperty(prop)

    返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。prop为要检测的属性的 String 字符串形式表示的名称,或者 Symbol

  5. Object.prototype.isPrototypeOf(obj)

    测试该对象是否存在于另一个对象的原型链上

  6. Object.prototype.propertyIsEnumerable(prop)

    返回一个布尔值,表示指定的属性是否可枚举

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript object转list可以采用以下方法: 1. 使用JSON.parse()方法将JSON对象转换为JavaScript对象。例如,给定JSON字符串`'{"a": "Hello", "b": "World"}'`,可以使用以下代码将其转换为JavaScript对象: ``` var obj = JSON.parse('{"a": "Hello", "b": "World"}'); ``` 2. 使用Object.keys()方法获取JavaScript对象的所有键,并将其存储在一个数组中。例如,给定上面转换得到的JavaScript对象,可以使用以下代码获取键的数组: ``` var keys = Object.keys(obj); ``` 3. 如果需要将键值对作为对象保存在列表中,可以使用Array.map()方法。例如,给定上面的JavaScript对象和键的数组,可以使用以下代码将键值对作为对象保存在列表中: ``` var list = keys.map(function(key) { return {key: key, value: obj[key]}; }); ``` 这将生成一个包含键值对对象的列表,其中每个对象具有`key`和`value`属性。 注意:上述代码是使用JavaScript语言进行示例,具体实现可能根据使用的编程语言和库而有所不同。例如,如果使用的是Jackson库进行JSON处理,可以使用该库提供的相应方法进行转换。123 #### 引用[.reference_title] - *1* *2* [JSON: JavaScript Object Notation(JavaScript 对象表示法)](https://blog.csdn.net/weixin_44153521/article/details/123428151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [关于 JavaScript Object.keys() 排序问题的探索与总结](https://blog.csdn.net/xgangzai/article/details/116112851)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值