在下面的代码中,我定义了Greeter.prototype.isVeryPolite = function(){...用于访问this._isVeryPolite
int i;
struct timespec t = {1, 0};
for (i = 0; i < 10; ++i) {
nanosleep(&t, NULL);
printf('\ri: %d', i);
}
但&#34;()&#34;最后用户不是很友好。有没有javascript的技巧,能够拥有greeter.isVeryPolite而无需直接访问会员?
https://jsfiddle.net/5r4so2Ld/
i: 9
答案 0 :(得分:7)
听起来你正在寻找getter。一个例子(摘自MDN):
var log = ['test'];
var obj = {
get latest () {
if (log.length == 0) return undefined;
return log[log.length - 1]
}
}
console.log (obj.latest); // Will return "test".
答案 1 :(得分:3)
您可以使用Object.defineProperty
方法定义getter:
Object.defineProperty(Greeter.prototype, "isVeryPolite",
{
get: function() {return this._isVeryPolite; },
});
答案 2 :(得分:2)
您可以使用Object.defineProperty
来保留原型模式并仍然使用getter模式。
Object.defineProperty(Greeter.prototype, "isVeryPolite", {
get: function isVeryPolite() {
return this.isVeryPolite;
}
});