isFlag 而不是 isFlag() 语法:在 Javascript 中可能吗?
isFlag instead of isFlag() syntax : is it possible in Javascript
在下面的代码中,我定义了 Greeter.prototype.isVeryPolite = function () {...用于访问this._isVeryPolite
greeter.isVeryPolite()
但是最后的"()"不是很用户友好。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);
听起来你正在寻找一个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".
您可以使用 Object.defineProperty
方法来定义 getter:
Object.defineProperty(Greeter.prototype, "isVeryPolite",
{
get: function() {return this._isVeryPolite; },
});
您可以使用
Object.defineProperty
来保持原型模式,并且仍然使用getter模式。
Object.defineProperty(Greeter.prototype, "isVeryPolite", {
get: function isVeryPolite() {
return this.isVeryPolite;
}
});
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- 使用javascript将动态表从一个html页面打印到另一个html页
- isFlag 而不是 isFlag() 语法:在 Javascript 中可能吗?