【js学习笔记-035】--属性getter和setter

ECMAScript5(包括除IE以外的最新主浏览器的ECMAScript3的实现)

由getter 和 setter定义的属性称做“存取器属性”,它不同于“数据属性”:数据属性只有一个简单的值。

如果对象属性同时有getter和setter方法,它是一个读写属性。如果它只有getter方法,那么它是一个只读属性。如果它只有setter方法,那么它是一个只写属性,读取只写属性总是返回undefined。

定义存取器最简单的方法是使用直接量语法的一种扩展写法:

var o = {

 data_prop:value,

  getaccessor_prop(){ /*这里是函数体*/},

  setaccessor_prop(value){ /*这里是函数体*/

}

和属性名同名的一个或两个函数,用逗号隔开的。例如下:

 

var p = {

   x:1.0,

  y:1.0 , //x和y普通的可读可写属性

  get r(){

   return Math.sqrt(this.x*this.x+this.y*this.y);

},

set r(newValue){

  var oldvalue = Math.sqrt(this.x*this.x+this.y*this.y);

  var ratio =newValue/oldvalue;

  this.x*=ratio;

  this.y*=ratio;

},

//theta是只读存取器属性,它只有getter方法

get theta(){return Math.atan2(this.y,this.x);}

 

}

和数据属性一样,存取器属性是可以继承的,因此可以将上述代码中的对象p当做另一个“点”的原型

var q = inherit(p);

q.x =1,q.y=1;

console.log(q.r) //使用继承的存取器属性

console.log(q.theta);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值