在下面的代码中,我定义了Greeter.prototype.isVeryPolite = function(){...用于访问this._isVeryPolite
greeter.isVeryPolite()
Run Code Online (Sandbox Code Playgroud)
但最后的"()"不是非常用户友好.有没有javascript的技巧,能够拥有greeter.isVeryPolite而无需直接访问会员?
https://jsfiddle.net/5r4so2Ld/
var Greeter = (function () {
function Greeter(message, flag) {
this._name = message;
this._isVeryPolite = flag;
}
Greeter.prototype.greet = function () {
if (this._isVeryPolite) {
return "How do you do, " + this._name;
}
else {
return "Hello " + this._name;
}
};
Greeter.prototype.isVeryPolite = function () {
return this._isVeryPolite;
};
return Greeter;
})();
var greeter = new Greeter("world", true);
var button = document.createElement('button');
button.textContent = "Say Hello";
button.onclick = function () {
alert(greeter.greet());
alert(greeter.isVeryPolite());
};
document.body.appendChild(button);
Run Code Online (Sandbox Code Playgroud)
听起来你正在寻找一个吸气剂.一个例子(取自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".
Run Code Online (Sandbox Code Playgroud)