问答详情
源自:4-4 [JavaScript]get/set方法

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

我将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);


提问者:慕娘5227020 2016-04-19 17:15

个回答