关于Javascript所隐藏的小知识

访问器属性, IE8+新添加的语言特征,允许用户在赋值或取值都经过预先设定的函数,从而实现内部属性 的那一种特殊效果。比如说我们能让一个属性无法赋值,取值时都返回1000;让一个属性在赋值时,会执行另一处的方法……

现在javascript有三种方式设置访问器属性

HTMLElement.prototype.__defineGetter__("description"function() {
    return this.desc
})
HTMLElement.prototype.__defineSetter__("description"function(val) {
    this.desc = val
})
document.body.description = "Beautiful body"


这三种定义方式,无法哪一种,都要求我们设置一个读方法getter,一个写方法setter。 getter, setter是用于改写用户访问某属性的行为。

一般来说,我们对某属性的常用操作有如下四种,赋值,取值,遍历,删除。赋值会其内部的set方法, 取值会调用其内部的get方法, 遍历关系到其enumerable配置项,删除关系到其configurable配置项。一般地,我们称那些用户赋什么值返回什么值的属性为普通属性, 在set, get关键字,或__defineSetter__, __defineGetter__没出来之前,大多数对象的属性都是普通属性。 只有像数组的length属性与元素节点的innerHTML, 会在用户取值或赋值做一些额外的操作,它们就是访问器属性。 avalon.define生成的VM就是一个包含了是访问器属性的魔术对象。 avalon会在它们的setter,getter方法做依赖收集与同步视图等工作, 从来让我们就算不写一行有关DOM操作的代码,也能做jQuery那种灵活操作DOM的效果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值