JS中Object.defineProperty()的用法

一、语法

      ​    1.obj    要定义属性的对象。
          2.prop 要定义或修改的属性的名称或 Symbol 。
          3.descriptor 要定义或修改的属性描述符。

    Object.defineProperty(obj, prop, descriptor)

二、结构

        例一:

例一:
var obj = {}; // 创建一个新对象

// 在对象中添加一个属性与数据描述符的示例
Object.defineProperty(obj, "key", {
  value : 37,
  writable : true,
  enumerable : true,
  configurable : true
});


例二:
var obj = {}; // 创建一个新对象
// 在对象中添加一个属性与数据描述符的示例
Object.defineProperty(obj, "key", {
  enumerable: false,
  configurable: false,
  writable: false,
  value: "static"
});


         1.configurable当且仅当该属性的 configurable 键值为 true 时,该属性的描述符才能够被改变,同时该属性也能从对应的对象上被删除。默认为 false。

         2.enumerable当且仅当该属性的 enumerable 键值为 true 时,该属性才会出现在对象的枚举属性中。默认为 false。
         3.value该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。默认为 undefined。

         4.writable当且仅当该属性的 writable 键值为 true 时,属性的值,也就是上面的 value,才能被赋值运算符 (en-US)改变。默认为 false。

       例二:

var obj = {}; // 创建一个新对象
var bValue = 38;
Object.defineProperty(obj, "key", {
  get : function() { return bValue; },
  set : function(newValue) { bValue = newValue; },
  enumerable : true,
  configurable : true
});


      1.get属性的 getter 函数,如果没有 getter,则为 undefined。当访问该属性时,会调用此函数。执行时不传入任何参数,但是会传入 this 对象该函数的返回值会被用作属性的值。默认为undefined。

       2.set属性的 setter 函数,如果没有 setter,则为 undefined。当属性值被修改时,会调用此函数。该方法接受一个参数,会传入赋值时的 this 对象。默认为 undefined。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值