作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定函数对象:
var foo = function foo() {
return "My methods are bar and baz";
};
foo.bar = function () {return "ok";};
foo.prototype.baz = function () {return "ok";};
如果调用 foo.bar() 或 foo.baz(),它们会响应 ok。但是,如果我尝试 foo.wrong(),则会收到错误。
有没有办法让 foo 函数对象响应“调用的方法无效”?换句话说,我可以看到 foo 函数对象中正在调用哪些方法以确保它们有效(存在)吗?
例如,由于 javascript 在原型(prototype)链中搜索有效函数,有没有办法 Hook 该搜索并在搜索失败时用我自己的函数进行响应(也许是我添加到 foo 原型(prototype)中的函数来处理无效方法)?
每次我尝试调用 foo 函数对象的方法时,我想在 foo 函数本身而不是外部测试这种情况。
此外,请遵守严格模式指南。
最佳答案
由于您不想每次调用函数时都检查该函数是否存在,因此您可以添加一个 call
函数来检查函数名称(如 @Izzey 建议的那样):
foo.call = function(name) {
if('function' === typeof this[name]) {
return this[name]();
}else{
console.error('function not found');
}
}
然后使用call(name)
函数调用每个函数:
foo.call('bar');
关于javascript - 如何在 javascript 函数对象中测试是否调用了无效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29590788/
我是一名优秀的程序员,十分优秀!