相关疑难解决方法(0)

是否有相当于__noSuchMethod__属性的属性,或者在JS中实现它的方法?

在一些javascript实现中有一个noSuchMethod功能(Rhino,SpiderMonkey)

proxy = {
    __noSuchMethod__: function(methodName, args){
        return "The " + methodName + " method isn't implemented yet. HINT: I accept cash and beer bribes" ;
    },

    realMethod: function(){
     return "implemented" ;   
    }
}

js> proxy.realMethod()
implemented
js> proxy.newIPod()
The newIPod method isn't implemented yet. HINT: I accept cash and beer bribes
js>
Run Code Online (Sandbox Code Playgroud)

我想知道,有没有办法为房产做类似的事情?我想编写可以在属性和方法上分派的代理类.

javascript

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

用于IE11的ES6代理Polyfill

IE11不会也不会实现ES2015代理对象.然而,IE11的延长支持终止于2025年10月14日.

有没有办法为IE11填充代理对象?所有其他浏览器都支持Proxy.

如果是,那么我们今天都可以在生产中使用它.如果没有,那么我们将不得不等待近十年......

编辑:我专门针对IE11,因为我知道IE通常具有我通常不知道的IE特定功能.

Edit2:我特别感兴趣的是能够实现一个全能拦截器.与__getattr__Python 类似.它只需要在IE11中工作.

javascript internet-explorer ecmascript-6 internet-explorer-11 es6-proxy

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

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对象属性(魔术getter和setter)

如何在JavaScript中模拟PHP风格的__get()和__set()魔术getter/setter?很多人都说现在这是不可能的.我几乎可以肯定这是可能的,因为像nowjs(http://nowjs.com)这样的项目会做这样的事情.

我知道您可以使用getset,但是当您不确定属性名称是什么时,这些不起作用.例如,如果您希望在创建新属性时执行事件处理程序,该怎么办?

我想做的例子:

var obj = {};
notify(obj, function(key, value) {
   //key is now the name of the property being set.
   //value is the value of the property about to be set
   console.log("setting " + key + " to " + value);
});
obj.foo = 2; //prints "setting foo to 2"
obj.bar = {a: 2}; //prints "setting bar to [Object]"
//Notice that notify() worked even though 'foo' and 'bar' weren't even defined …
Run Code Online (Sandbox Code Playgroud)

javascript getter setter node.js

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

Python中的__getattr__在Javascript中

有没有办法__getattr__在Javascript中模拟Python的方法?

我想拦截Javascript对象属性的'获取'和'集'.

在Python中,我可以编写以下内容:

class A:
    def __getattr__(self, key):
        return key

a = A()
print( a.b )  # Output: b
Run Code Online (Sandbox Code Playgroud)

Javascript怎么样?

javascript

24
推荐指数
1
解决办法
5273
查看次数

有没有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示例:

var myobj = {   func1: function() { alert(name in this) },
                func2: function() { alert(name in this) },
                func3: function() { alert(name in this) }
}

myobj.func2(); // returns true
myobj.func4(); // undefined function
Run Code Online (Sandbox Code Playgroud)

myobj如果func4()在保留myobj.functionCall()格式的同时没有定义键/函数(如),是否可以创建一个"全能"键?

javascript default key function catch-all

13
推荐指数
2
解决办法
8492
查看次数

JavaScript相当于PHP的__get()魔术方法

可能重复:
所有属性的JavaScript getter

JavaScript是否提供了访问未定义对象属性的方法?在PHP中,解决方案是__get()在类中声明和实现方法.
使用try { .. } catch { .. }的解决方案对我来说还不够,因为我已经拥有非常大量的代码,而这些代码实际上需要保持原样.

javascript php get properties undefined

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

JavaScript中的魔术方法

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

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

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

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

javascript php magic-methods

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

如何使用ECMAScript 5定义默认的getter和setter?

如何为原型指定默认的getter?使用默认getter,我的意思是调用if函数obj.undefinedProperty123.

我尝试了Object.prototype.get = function(property){..},但在这种情况下不会调用它.

javascript getter prototype ecmascript-5

8
推荐指数
2
解决办法
6578
查看次数