对不起,标题很抱歉,我真的不知道该如何提出我的问题。
下面的代码只是我为自动完成与游戏的click事件配对的按钮的生成而做的一小部分。
我正打算将modal.load()
函数(以关联数组作为参数)作为字符串传递给"Look"
按钮。好吧,函数传递可以正常工作(不在提供的代码中),但是
如您所见,actions[0].script
的每个属性都返回undefined
,好像没有传递this
。
如果您需要其他任何内容来理解代码,请告诉我。
actions = [{
name: "Look",
modal_color: 'salmon',
modal_img: '',
modal_title: 'This is a title',
modal_text: 'This is text',
script: `modal.load({'img': '${this.modal_img}', 'color': '${this.modal_color}', 'title': '${this.modal_color}', 'txt': '${this.modal_text}'});`,
},
{
name: "Walk",
script: "console.info('Other type of script')"
}
]
console.log(actions[0].script)
编辑:为清晰起见,模板字符串
答案 0 :(得分:3)
“此”仅在功能范围内起作用,而不在对象范围内起作用
actions = [{
name: "Look",
modal_color: 'salmon',
modal_img: '',
modal_title: 'This is a title',
modal_text: 'This is text',
script: function(){
return `modal.load({'img': '${this.modal_img}', 'color': '${this.modal_color}', 'title': '${this.modal_color}', 'txt': '${this.modal_text}'});`;
}},
{
name: "Walk",
script: "console.info('Other type of script')"
}
]
console.log(actions[0].script())
答案 1 :(得分:2)
在创建对象之后对数组进行迭代对您有用吗?
例如,
actions = [{
name: "Look",
modal_color: 'salmon',
modal_img: '',
modal_title: 'This is a title',
modal_text: 'This is text'
},
{
name: "Walk",
script: "console.info('Other type of script')"
}
];
actions.forEach( (e) => { e.script = "modal.load({'img': '" + e.modal_img + "', 'color': '" + e.modal_color + "', 'title': '" + e.modal_color + "', 'txt': '" + e.modal_text + "'});" });
console.log(actions[0].script);
答案 2 :(得分:0)
谢谢大家,我终于决定重新编写所有相应的代码,以使事情不会太复杂。