isFlag而不是isFlag()语法:是否可以在Javascript中使用

时间:2016-02-08 21:56:43

标签: javascript

在下面的代码中,我定义了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

3 个答案:

答案 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;
    }
});