在 Ruby 中,我认为您可以调用一个尚未定义的方法,然后捕获调用的方法的名称并在运行时处理该方法。
Javascript 可以做同样的事情吗?
最佳答案
method_missing 不适合 JavaScript,原因与它在 Python 中不存在的原因相同:在这两种语言中,方法只是碰巧是函数的属性;并且对象通常具有不可调用的公共(public)属性。与 Ruby 相比,对象的公共(public)接口(interface)是 100% 的方法。
JavaScript 中需要的是一个钩子(Hook)来捕获对缺失属性的访问,无论它们是否是方法。 Python 有它:参见 __getattr__特殊方法。
__noSuchMethod__ Mozilla 的提案在充满它们的语言中引入了另一个不一致。
JavaScript 的前进方向是 Proxy mechanism (也在 ECMAscript Harmony 中),它更接近 customizing attribute access 的 Python 协议(protocol)而不是 Ruby 的 method_missing。
关于javascript - Javascript 是否具有类似于 Ruby 的 method_missing 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779624/