Object.defineProperty()的理解

对象是由名/值对组成的无序的集合。
定义对象可以使用构造函数或字面量的形式:

  var obj = new Object();
  obj.name = "sss"

我们还可以使用Object.defineProperty定义新属性或修改原有的属性。
语法:

Object.defineProperty(obj, prop, descriptor)

参数说明:

obj:必需。目标对象
prop:必需。需定义或修改的属性的名字
descriptor:必需。目标属性所拥有的特性

给对象的属性添加特性描述,目前提供两种形式:数据描述和存取器描述。

数据描述

当修改或定义对象的某个属性的时候,给这个属性添加一些特性:

  var obj = {test:'sss'}
  Object.defineProperty(obj,'test',{
      value:任意类型的值, //不设置该属性 ,默认为undefined
      configurable: true | false, // 是否可以delete删除目标属性或者是否可以再次修改属性的特性
      enumerable: true | false,   //是否可以被枚举(for..in |Object.keys())
      writable: true | false   //是否可以被重写
  })

存取器描述

  var obj = {}
  var initValue = 'hello'
  Object.defineProperty(obj,"newKey",{
         get:function(){ return initValue;} | undefined,   //不设置get方法,则默认undefined
         set:function(value){ initValue = value; } | undefined,
         configurable: true | false,
         enumerable: true | false
  })

ps:当使用了getter或setter方法,不允许使用writable和value这两个属性

赞赞哇.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 心里有很多话,只有心里在默默嘀咕。不知道跟谁说,好像大家都在忙着自己的事情…
    白色风信子阅读 184评论 0 0
  • jQuery的API: 1.选择器: > + ~ nth-child(编号),nth-of-type(编号),[属...
    梦的枷锁阅读 267评论 0 1
  • 想乘着爱的翅膀带你去远方 是什么原因你的脚步在彷徨 想问你怕什么 有什么放不下 你总是说你早以把心门锁上 我知道你...
    樂鈫阅读 333评论 0 0

友情链接更多精彩内容