js中读写属性的------get/set 方法

var man={
    name:'dudu',
    weibo:'dudu',
    get age(){
        return new Date().getFullYear() - 1988;
    },
    set age(val){
        console.log( ' Age can't be set to '+  val)
    }
}

console.log(man.age) //27
man.age=100 // Age can't be set to 100
console.log(man.age ) //27 

var man={
    name:'dudu',
    $age:null,
    get age(){
        //判断是否是null和ndefined  ==
        if(this.$age==undefined){
            return new Date().getFullYear() - 1988;
        }else{
            return this.$age;
        }
        
    },
    set age(val){
       //js使用'val === +val'判断是否为数字 
        val = +val
        if(!isNan(val)&&val>0&&val<150){
            this.$age= +val
        }else{
            throw new Error('Incorrect val=' + val)}
        
    }
}

console.log(man.age) //27
man.age=100 
console.log(man.age ) //100
mag.age='abc' //error:Incorrect val =NaN

原型链与 get set

function foo(){
    Object.definePropertyt(foo.prototype,'z',
    { get : function(){
          return 1;  
      }}
    )
}

var obj = new foo()
​
obj.z // 1
obj.z=10;
obj.z //1


Object.defineProperty(obj,'z',
    {value:100 ,confingurable:true});
    obj.z;//100
    delete obj.z;
    obj.z;//back to 1
}

var  o={}
Object.defineProperty(o,'x',{value:1}); //writable:false,configurable:false
var obj=Object.create(o)
obj.x; //1
obj.x=200;
obj.x; // 1  不能更改


Object.defineProperty(obj,'x',{writable:true,configurable:true,value:100})

obj.x;//100
obj.x=700;
obj.x; //700

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值