对象的特性、setter 和 getter

对象的特性、setter 和 getter

  • 除了包含名字和值外,属性还包含一些标识它们可写、可枚举和可配置的特性。在 ES3 中无法设置这些特性,所有通过 ES3 的程序创建的属性都是可写的、可枚举的和可配置的,且无法对这些特性做修改。本节将讲述 ES5 中查询和设置这些属性特性的 API。这些 API 对于库的开发者来说非常重要,因为:
    1.可以通过这些 API 给原型对象添加方法,并将它们设置成不可枚举的,这让它们看起来更像内置方法。
    2.可以通过这些 API 给对象定义不能修改或删除的属性,借此“锁定”这个对象。
  • 我们将存取器属性的 getter 和 setter 方法看成是属性的特性。按照这个逻辑,我们也可以把数据属性的值同样看作属性的特征。因此,可以认为一个属性包含一个名字和 4 个特性。数据属性的 4 个特性分别是它的值(value)、可写性(writable)、可枚举性(enumerable)和可配置性(configurable)。存取器属性不具有值(value)特性和可写性,它们的可写性是由 setter 方法存在与否决定的。因此存取器属性的 4 个特性是读取(get)、写入(set)、可枚举性和可配置性。
  • 数据属性的描述符对象的属性有 value、writable、enumerable 和 configurable。存取器属性的描述符对象则用 get 属性和 set 属性代替 value 和 writable。其中 writable、enumerable 和 configurable 都是布尔值,当然,get 属性和 set 属性是函数值。
  • 当通过一个对象来调用函数时,该对象就是此次调用的上下文,也就是该函数的 this 值。
  • 任何函数只要作为方法调用实际上都会传入一个隐式的实参,这个实参是一个对象。方法调用的母体就是这个对象。通常来讲,基于那个对象的方法可以执行多种操作,方法调用的语法已经很清晰地表明了函数将基于一个对象进行操作。
  • 之所以没有用 var 声明的变量可以使用 delete 操作符删除,而使用 var 定义的不可以被删除,是因为使用了 var 以后,该变量作为 window 的属性,它的特性 [[Configurable]] 的值被设置为了 false。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值