有没有办法强制原型的方法(功能)成为属性?
假设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
吗?
答案 0 :(得分:1)
您可以使用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