最佳答案
我知道如何为已知名称的属性创建 getter 和 setter,方法如下:
// A trivial example:
function MyObject(val){
this.count = 0;
this.value = val;
}
MyObject.prototype = {
get value(){
return this.count < 2 ? "Go away" : this._value;
},
set value(val){
this._value = val + (++this.count);
}
};
var a = new MyObject('foo');
alert(a.value); // --> "Go away"
a.value = 'bar';
alert(a.value); // --> "bar2"
现在,我的问题是,有没有可能定义类似这样的全面获取器和设置器?例如,为 不是已经定义的任何属性名创建 getter 和 setter。
这个概念在 PHP 中使用 __get()
和 __set()
神奇方法是可能的(有关这些方法的信息,请参阅 PHP 文档) ,所以我真的在问是否有一个 JavaScript 等价于这些方法?
不用说,我希望有一个跨浏览器兼容的解决方案。