javascript - 如何在 javascript 函数对象中测试是否调用了无效方法?

标签 javascript node.js function object prototype

给定函数对象:

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/

相关文章:

javascript - 使用 javascript 设置屏幕方向、宽度和高度

javascript - 将鼠标悬停在评级上时显示文本,并在单击时停留

javascript - 这是用ajax处理发布变量的好方法吗

node.js - 如何结束对 Twitter 流 API 的 npm oauth.get 请求的流响应?

javascript - 在 Javascript 中将字符从 ISO-8859-1 转换为 UTF-8 编码时保留字符表示

使用函数时无法获取小数?

c - 在函数内部使用 realloc

php - 从另一个域加载网页并注入(inject) JavaScript

javascript - 如何使用 jwt 解码 token

python - 递归,使用输入调用函数