相关疑难解决方法(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万
查看次数

所有属性的JavaScript getter

长话短说:我的情况是我喜欢PHP式的getter,但是在JavaScript中.

我的JavaScript只在Firefox中运行,因此我可以使用Mozilla特定的JS.

我可以找到制作JS getter的唯一方法是需要指定它的名称,但是我想为所有可能的名称定义一个getter .我不确定这是否可行,但我非常想知道.

javascript getter firefox

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

PHP等效的PHP __call

在PHP中,您可以使用"魔术" __call功能检测方法何时被调用,即使它不存在.

public function __call($methodName, $args)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

您可以调用任何方法,并将名称和参数传递给此魔法catch-all.

在JavaScript中是否有类似的技术允许调用任何方法,即使它实际上不存在于对象上?

var foo = (function () {
    return {
         __call: function (name, args) { // NOT REAL CODE
             alert(name); // "nonExistent"
         }
    }
}());

foo.nonExistent();
Run Code Online (Sandbox Code Playgroud)

javascript

28
推荐指数
3
解决办法
9557
查看次数

有没有javascript相当于python的__getattr__方法?

在python中,您可以定义一个对象,该对象具有__getattr__(self,key)处理所有未知属性的方法,这些方法可以以编程方式解决,但在javascript中,您只能为预定义属性定义getter和setter.是否有一种通用的方式来在javascript中完成前一件事?

示例代码如下:

function X() {};
X.prototype={
  __getattr__:function(attrname) {
    return "Value for attribute '"+attrname+"'";
  }
}

x=new X()
alert(x.lskdjoau); // produces message: "Value of attribute 'lskdjoau'"
Run Code Online (Sandbox Code Playgroud)

关键点是根据属性的名称以编程方式获取属性的值.预设置属性没有帮助,因为在init期间没有信息可能请求哪些属性.

javascript

23
推荐指数
2
解决办法
9449
查看次数

JavaScript中的魔术方法

JavaScript下的任何魔术(al)方法都是?

我在明确兴趣setter方法,getter方法和可调用(函数/方法),像我们在PHP:__set,__get和__call&& __callStatic.

我在谷歌上搜索和搜索StackOverflow,但没有结果.

如果有人被告知,请,谢谢!

javascript php magic-methods

12
推荐指数
1
解决办法
2万
查看次数