我正在使用javascript中的对象属性,我遇到了一个我无法找到的问题。在这个javascript程序中,我创建了名称和年龄的对象属性,并创建了getter和setter。
function people(name, age) {
this.name = name;
this.age = age;
Object.defineProperty(this, "age", {
get: function() {
return age;
}
}, {
set: function(value) {
if (value < 18) {
alert("You are below legal age");
} else {
age = value;
}
}
})
Object.defineProperty(this, "name", {
get: function() {
return name;
}
})
}
var pep = new people("John", 22);
document.write(pep);
&#13;
在我创建一个对象并尝试打印它后,我得到的输出为[object,object]
。但我可以使用pep.name
或pep.age
打印姓名和年龄。当我尝试使用pep.age=40
更改年龄值并打印它时,它会显示旧值而不是新值。
答案 0 :(得分:0)
您的代码只有一堆语法错误。最好先通过调试器/语法检查来运行我们的代码。这是你的代码,重新格式化,正确的语法正常工作:
function people(name, age) {
this.name = name;
this.age = age;
Object.defineProperty(this, 'age', {
get: function() {
return age;
},
set: function(value) {
if (value < 18) {
alert("You are below legal age");
} else {
age = value;
}
}
});
Object.defineProperty(this, 'name', {
get: function() {
return name;
}
});
}
var pep = new people("John", 22);
pep.age = 25;
alert(pep.age); //25