js对象访问器是指ECMAScript 5 (2009) 引入的 Getter 和 Setter。
Getter 和 Setter 允许您定义对象访问器(被计算的属性)。
js对象访问器的优点
- 它提供了更简洁的语法
- 它允许属性和方法的语法相同
- 它可以确保更好的数据质量
- 有利于后台工作
Object.defineProperty()
访问器属性不能直接定义,必须使用Object.defineProperty()来定义
用 Object.defineProperty() 添加的属性值是不可修改的。
//Object.defineProperty(obj, prop, descriptor)
//obj 要在其上定义属性的对象。
//prop 要定义或修改的属性的名称。
// descriptor 将被定义或修改的属性描述符。
var book = {
_year : 2004,
edition : 1
}
Object.defineProperty(book,"year",{
get: function(){
return this._year;
},
set: function(newValue){
if(newValue > 2004){
this._year = newValue
this.edition += newValue-2004
}
}
})
book.year = 2005
alert(book.edition)//2
上述代码创建了一个book对象,两个默认属性是_year和edition
定义了一个访问器属性year 包含getter 和setter两个函数
getter函数返回_year的值,setter函数通过计算来确定正确的版本
当修改访问器属性时触发setter函数,导致_year变成了2005,而edition变成了2
作者:阿龙哟
链接:https://www.jianshu.com/p/94d0fa7c427a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。