JavaScript对象数组中能否为属性值传入函数?附尝试代码
解决对象数组中函数属性的执行问题
嘿,我瞅了下你的代码,问题其实很明显,两个小失误导致函数没按预期执行:
1. 错误地把函数存成了字符串
你原代码里的buttonFunc值用单引号包起来了,这就把箭头函数变成了普通字符串,而不是可执行的函数对象。而且里面的console.log('test')还因为单引号嵌套触发了语法错误(外层单引号和内层单引号冲突了)。
2. 调用函数时没加执行括号
就算函数存对了,你forEach里只写element.buttonFunc只是获取了函数的引用,并没有触发执行,必须加()才会调用它。
修正后的完整代码
const myArray = [ { buttonSelector: '.edit_button', buttonFunc: () => console.log('test') // 去掉引号,直接存储函数对象 } ]; // 调用函数时添加括号触发执行 myArray.forEach(element => { element.buttonFunc(); });
额外扩展:带参数的函数写法
如果你的函数需要接收参数,也可以直接在定义时预留参数位,调用时传入即可:
const myArray = [ { buttonSelector: '.edit_button', buttonFunc: (message) => console.log(message) } ]; myArray.forEach(element => { element.buttonFunc('自定义输出内容'); // 输出:自定义输出内容 });
这样就能正常执行你预期的逻辑啦!
内容的提问来源于stack exchange,提问作者Deano
相关产品推荐
相关产品推荐

