方法作为原型中的属性
Method as a properties in prototypes
是否有办法强制一个原型的方法(函数)是一个属性?
假设我有Foo
,方法bar
:
Foo.prototype.bar = function getBar() {
return something
}
要调用bar
,我可以简单地调用foo.bar();
,但是我希望bar
是Foo的一个属性,而不是一个方法,即foo.bar;
。为此,我可以简单地使getbar()
成为一个自调用函数:
Foo.prototype.bar = (function getBar() {
return something
})();
现在.bar
可以作为属性调用。但是问题是bar
只在创建Foo
实例时设置,而不是每次调用.bar
时设置。
是否有任何方法可以让getBar()
每次调用foo.bar
时都被执行?
你可以使用getter:
function Foo () {
this.x = 1;
};
// Example of adding a getter to Foo.prototype
Object.defineProperty(Foo.prototype, 'bar', {
get: function getBar () {
return this.x++;
}
});
var tmp = new Foo;
tmp.bar; // 1
tmp.bar; // 2
tmp.bar; // 3
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 附加到原型属性的Do函数没有闭包
- 日期原型属性
- 价值、原型和属性的差异
- 使用闭包创建原型中引用的私有属性
- 为什么属性存在于对象实例上,即使其原型发生了更改
- 为什么在原型中定义属性被视为反模式
- JS构造函数的原型属性与其原型之间的区别
- 为什么函数对象的实例没有继承函数原型属性
- 组件是HTML5的属性还是原型.js的东西
- 为什么浏览器显示原型属性不同
- 使用原型对象向javascript对象添加自定义属性和方法的建议
- Javascript设置&阴影属性(原型链)
- 高图表热图 未捕获类型错误:无法读取未定义的属性“原型”
- 无法使用服务AngularJS - “无法读取未定义的属性'原型'”
- 未捕获的类型错误:无法读取未定义的属性“原型”
- 如何在DOM object的构造函数中添加属性.原型在Internet Explorer<=IE8
- 扩展类不能读取未定义的属性原型
- 未捕获的类型错误:无法读取未定义的 sails.io.js 的属性“原型”
- 升级到量角器4后无法读取未定义的属性“原型”