|
|
1
10
有一种方法可以为不存在的方法上的调用定义泛型处理程序,但它是非标准的。签出 noSuchMethod getting support 为了它。 要使用它,请在任何对象上定义此方法:
但是,如果您想要一个跨浏览器方法,那么简单的try catch blocks就可以:
如果您不想在整个代码中编写try-catch,那么可以向主对象添加一个包装器,所有函数调用都通过该包装器进行路由。
|
|
|
2
17
好吧,看来有了和声(ES6),就会有一种方法,而且比其他方法更复杂 programing languages
代理将把处理程序未处理的所有方法转发到普通对象中。所以它就像它不在那里一样,你可以通过代理修改目标。还有更多的处理程序,甚至有一些用于修改原型获取,以及用于任何属性访问的设置程序yes!。 正如您所想象的,现在并不是所有浏览器都支持这个功能,但是在Firefox中,您可以很容易地使用代理界面,只需转到 MDN docs 如果能在这上面添加一些语法上的糖分,我会更高兴,但是无论如何,在一种已经强大的语言中拥有这种能力是很好的。祝你今天愉快!:) 我没有复制rosettacodejs条目,我更新了它。 |
|
|
3
2
看来你对JS很在行。 不幸的是,我不知道语言中有这样的特性,而且我很确定它不存在。在我看来,最好的选择是使用统一的接口并对其进行扩展,或者扩展对象继承的原型(然后可以在继续进行方法调用之前使用instanceof),或者使用有点麻烦的“&&'运算符以避免访问不存在的属性/方法:
|
|
|
4
1
您还可以检查该方法是否存在。
|
|
|
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 1 年前 |
|
|
Alex · 在轻量级中同时解构和不解构变量 1 年前 |
|
|
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 1 年前 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 1 年前 |
|
|
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 1 年前 |