以下不起作用,从我的getter中,我看不到“class”Person中定义的_nickname
。
var Person = function (args) {
var _nickname = '';
if (args === undefined || args === null) {
return;
}
if (args.nickname !== undefined && args.nickname !== null) {
_nickname = args.nickname;
}
}
Object.defineProperty(Person.prototype, "nickname", {
get : function () {
return _nickname;
}
});
var x = new Person({
nickname : 'bob'
});
console.log(x.nickname);
如何实现这一目标? 有没有办法在其函数中将_nickname添加到Person的原型中?
答案 0 :(得分:5)
有没有办法在其函数中将_nickname添加到Person的原型中?
如果你的意思是Person
构造函数,请确定(虽然在我看来它看起来并不优雅):
var Person = function (args) {
var _nickname = '';
if (args === undefined || args === null) {
return;
}
if (args.nickname !== undefined && args.nickname !== null) {
_nickname = args.nickname;
}
Object.defineProperty(this, "nickname", {
get : function () {
return _nickname;
}
});
}
var x = new Person({
nickname : 'bob'
});
console.log(x.nickname);
在这种情况下,你的getter只是另一个闭包,因此它可以访问_nickname
。而且它不再是原型,你需要一个自己的财产来完成它。