set和get方法定义的名字和属性名是不不能相同?

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

慕娘5227020

2016-04-19 17:15

我将set age()和属性age:null设置为同名,结果报错:Maximum call stack size exceeded,只要改成不同名就ok,请问这是什么原因?

var man = {
     	name:"nrt",
     	sex:"female",
     	age:null,
     	get age(){
     		if(this.age == undefined)
     		{
     			return new Date().getFullYear() - 1995;
     		}
     		else
     		{
     			return this.age;
     		}
     		
     	},
		set age(val){
	     		val = +val //转换为数值类型
	     		if(!isNaN(val) && val > 0 && val < 150)
	     		{
	     			this.age = +val;
	     		}
	     		else
	     		{
	     			console.log("输入非法");
	     		}
	     	}
     }

     console.log(man.age);
     man.age = 30;
     console.log(man.age);


写回答 关注

0回答

还没有人回答问题,可以看看其他问题

JavaScript深入浅出

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

281102 学习 · 1020 问题

查看课程

相似问题