JavaScript权威指南6-属性的特性(1)

    首先,对性属性值可以用一个或两个方法替代,这两个方法就是getter和seetter.由getter和setter定义的属性称作"存取器属性",它不同于"数据属性",数据属性只有一个简单的值.有如下代码:

var o = {
    $num : 0,
    set a(n){
        this.$num = n + 1;
    },
    get a(){
        return this.$num + 1;
    }
}
o.a = 10;//调用setter后值为11
console.log(o.a);//调用getter后返回的值为12

注意:和数据属性不同,存储器属性不具有可写性.三种情况:

    1.有setter和getter    可读可写

    2.只有setter             可写不可读

    3.只有getter            可读不可写

考虑下面代码:

var o = {
    $num : 0,
    set a(n){
        this.$num = n + 1;
    }
}
o.a = 10;//调用setter后值为11
console.log(o.a);//没有getter,所以返回的是undefined
var o = {
    $num : 0,
    get a(){
        return this.$num + 1;
    }
}
o.a = 10;//赋值失败,没有setter
console.log(o.a);//调用getter后返回的值为1


你可能感兴趣的:(setter,getter,javascript权威指南,属性的特性)