过去,JS使用Object.prototype .__ noSuchMethod __来处理不存在的方法,因此您可以根据OOP使用方法作为消息。
不幸的是,它已被弃用了。替换是代理对象。但是只对函数而不是对象应用处理程序catch调用,因此你不能捕获不存在的方法。
你可以使用get handler,但是你不知道你是否应该返回一些函数,或者什么都没有,只是做一些事情。您还没有名称访问的上下文。
那么,任何想法如何在没有明确检查的情况下处理不存在的方法?
答案 0 :(得分:1)
您无法获得Object.prototype.__ noSuchMethod __
的确切行为,但您可以非常接近。您可能知道要覆盖哪些属性,因此以下内容应该有效。
如果没有一个如何使用它的简单示例,很难提出更有意义的内容。也就是说,问题应始终显示代码。
var obj = {
b: 1,
c: 2
};
var proxy = new Proxy(obj, {
get: function(target, property, receiver) {
if (property == 'addBC') {
return function() {
return target.b + target.c;
}
}
return target[property];
}
})
console.log('proxy.addBC() => ' , proxy.addBC()); // 3
console.log(proxy.b); // 1
console.log(proxy.noexist); // undefined
try {
console.log(proxy.noexist());
} catch(e) {
console.log('error running no exist function')
}