以下不起作用,从我的 getter 来看,我看不到_nickname
在“类”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(Person.prototype, "nickname", {
get : function () {
return _nickname;
}
});
var x = new Person({
nickname : 'bob'
});
console.log(x.nickname);
应该如何去实现这一目标呢?
有没有办法在 Person 的函数中将 _nickname 添加到其原型中?
有没有办法在 Person 的函数中将 _nickname 添加到其原型中?
如果你的意思是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);
http://jsfiddle.net/JEbds/ http://jsfiddle.net/JEbds/
在这种情况下,你的 getter 只是另一个闭包,所以它可以访问_nickname
。它不再在原型上,你需要一个自己的属性来完成它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)