相关疑难解决方法(0)

是否可以在JavaScript中实现动态getter/setter?

我知道如何通过执行以下操作为名称已知的属性创建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"
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是,是否有可能定义这些全能的吸气剂和定型器?即,创建getter和setter的任何属性名称是不是已经定义.

这个概念可以在PHP中使用__get()__set()魔术方法(请参阅PHP文档以获取有关这些的信息),所以我真的要问是否有与这些相当的JavaScript?

不用说,我理想地喜欢跨浏览器兼容的解决方案.

javascript metaprogramming getter-setter

119
推荐指数
3
解决办法
5万
查看次数