set $age之后,运行man.age值为undefined

来源:4-4 [JavaScript]get/set方法

兮兮酱

2017-06-23 15:46


var man = {

name:'kkk',

weibo:'@Bosn',

$age:null,

get age(){

if( this.$age == undefined ){


return new Date().getFullYear() - 1988;

}

},

set age(val){

val = +val;

if( !isNaN(val) &&  val > 0 && val < 150){


this.$age = +val;

return this.$age;


}else{


console.log('Age can\'t be set to ' + val );

}

}

}

console.log( ' man.age =  '+ man.age); // 20 

man.$age = 100;

console.log( ' man.age2 =  '+ man.age); // undefined  这个我运行出来是undefined,老师的为啥是 100 ,


写回答 关注

1回答

  • 慕的地5531362
    2017-06-23 16:49:16
    已采纳

    这一段

    {
    return new Date().getFullYear() - 1988;
    }

    之后你没有写else的语句。

    原因:在你设置了$age之后if判断时显示false,不执行上一段的命令,但也没有else的命令可以执行,所以默认会返回undefined。

    兮兮酱

    奥,明白了,如果是man.age = 100 去改变值, 会先执行set,然后在执行get。谢谢啦~~~

    2017-06-23 18:37:21

    共 2 条回复 >

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281102 学习 · 1020 问题

查看课程

相似问题