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

如何用变量调用对象属性?代码遇Uncaught SyntaxError报错求助

解决通过字符串调用对象属性/方法的问题

首先,咱们拆解你遇到的两个核心问题:语法错误,以及属性与方法的逻辑混淆。

1. 关于Uncaught SyntaxError: Unexpected token [

这个错误几乎肯定是你实际代码的语法写错了——比如你可能误写了这种错误格式:

myobject.[show].thisfunction(); // ❌ 点操作符后不能直接跟方括号

正确的属性/方法访问逻辑是二选一:要么用点语法(myobject.lastName),要么用方括号语法(myobject[show]),不能把两种语法错误地拼接在一起。

2. 你的示例代码本身的逻辑问题

看你给出的代码:

var myobject = { firstName: "Bob", lastName: "Joe" }; 
var show = "lastName"; 
myobject[show].thisfunction(); 

这里myobject[show]拿到的是字符串"Joe",而字符串本身并没有thisfunction这个自定义方法——就算语法写对了,运行时也会抛出TypeError,提示“无法读取未定义的属性'thisfunction'”。

正确的实现方式

根据你的需求,分两种场景处理:

场景1:通过字符串调用对象的自定义方法

如果lastName是一个方法(而非字符串属性),需要把它定义为函数类型:

var myobject = {
  firstName: "Bob",
  // 将lastName设为方法
  lastName: function() {
    return "Joe";
  },
  // 定义你要调用的thisfunction
  thisfunction: function() {
    console.log("thisfunction执行了!");
  }
};

var show = "lastName";
// 调用lastName方法,注意要加()
console.log(myobject[show]()); // 输出 "Joe"

// 如果要调用thisfunction,用对应的属性名字符串
var funcKey = "thisfunction";
myobject[funcKey](); // 输出 "thisfunction执行了!"

场景2:调用属性值(比如字符串)的原生方法

如果lastName确实是字符串属性,你可以调用字符串自带的原生方法,比如:

var myobject = { firstName: "Bob", lastName: "Joe" };
var show = "lastName";
// 调用字符串的toUpperCase方法
console.log(myobject[show].toUpperCase()); // 输出 "JOE"

关键总结

  • 方括号语法obj[variable]是完全合法的属性/方法访问方式,但不要和点语法错误拼接(比如obj.[variable]是无效写法)
  • 调用方法前,务必确认你通过方括号获取到的是函数类型的值,否则会抛出类型错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:08:16