javascript数据属性和访问器属性


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-edition;
}
}
});
book.year=2005;
alert(book.edition);//2

defineProperties可以让你设置属性的配置,例如如何赋值,如何返回,是否允许被for in遍历,不过这多半是用在oop中的,因为你可能会需要设置对象的私有属性,公共属性是不需要这么复杂的创建过程。

至于其中包含了set和get方法,你可以这么理解,属性的赋值与获取必须按照你设定的方法来执行,例如
get:function(){
return this._year;
},
在调用book.year时就会自动执行get方法,返回你要返回的东西( return this._year),

同样在你执行book.year=111;同样会自动执行set方法,将会按你的要求设置某些东西。

总之赋值与获取都必须由年来控制,比如你永远需要一个大于0的数字做分母,那么你就能控制了
,只要设置好set函数就行。

这些方法按理说应该是用在oop中,js中只要是对象都能用,看你的程序要求了
_year 是属性:静态的 只读 year 是方法:可以理解为私有函数,用于表示只能通过对象方法访问的属性

转载于:https://www.cnblogs.com/aixiuxiu/p/6222410.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值