You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript调用对象方法出现异常,请求技术排查

问题排查与修复

我帮你瞅了瞅这段代码,运行出错的原因很明确——你在调用方法的时候用错了语法!

问题根源

在invokeMethod函数里,你已经通过const func = object[method]拿到了目标方法的引用,但接下来你写了object.func();,这里的.语法会把func当成一个固定的属性名去访问,而不是你之前定义的变量func的值。换句话说,JavaScript会去查找object上有没有叫"func"的方法,而不是你传入的"sayName",自然就会报错啦。

两种修复方式

方式一:直接调用拿到的方法引用

既然已经把方法赋值给了func变量,直接调用它就行:

const info = { 
  name: 'Steve', 
  phone: 20655564, 
  email: 'SJ@yahoo.com', 
  sayName: function(){ console.log('Hello I am ' + info.name); }, 
};
function invokeMethod(object, method) { 
  const func = object[method];
  func(); // 直接调用拿到的方法引用
}
invokeMethod(info, 'sayName');

方式二:省略中间变量,直接通过方括号调用

其实你完全可以不用额外的变量,直接用方括号语法调用方法:

const info = { 
  name: 'Steve', 
  phone: 20655564, 
  email: 'SJ@yahoo.com', 
  sayName: function(){ console.log('Hello I am ' + info.name); }, 
};
function invokeMethod(object, method) { 
  object[method](); // 直接用方括号访问并调用方法
}
invokeMethod(info, 'sayName');

额外小建议

为了代码更健壮,你可以加个判断,确保传入的method确实是对象上的可调用方法:

function invokeMethod(object, method) { 
  if (typeof object[method] === 'function') {
    object[method]();
  } else {
    console.error(`${method} is not a valid function on the object`);
  }
}

内容的提问来源于stack exchange,提问作者user2785628

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:27:50