gpt4 book ai didi

javascript - 为什么我不能将对象的方法保存为另一个对象文字的属性

转载 作者:行者123 更新时间:2023-12-02 20:43:49 28 4
gpt4 key购买 nike

下面的代码用于记录一些在特定情况下运行的方法,以便可以使用更简单的语法调用它们。

var callbacks = {alter: SPZ.sequenceEditor.saveAndLoadPuzzle,
copy: SPZ.sequenceEditor.saveAsCopyAndLoadPuzzle,
justSave:SPZ.sequenceEditor.saveAndLoadPuzzle};

但是代码不断返回空对象。我已经使用 console.log 检查了这些方法是否已定义。我还尝试更改名称,调用空对象,然后添加属性,例如callbacks.alter,并尝试其他不重要的更改。

为什么这不起作用?

Demo

错误出现在 puzzle.js 的第 238 行

最佳答案

到底是什么问题?属性将是 undefined或者调用无法正常工作?

如果是后者,问题很可能是在调用方法时,this将不再引用SPZ.sequenceEditor ,但是你的callbacks目的;要解决此问题,请使用辅助函数 bind() (由多个框架定义)或自己包装调用:

var callbacks = {
alter: function() {
return SPZ.sequenceEditor.saveAndLoadPuzzle.apply(
SPZ.sequenceEditor, arguments);
},
copy: function() {
return SPZ.sequenceEditor.saveAsCopyAndLoadPuzzle.apply(
SPZ.sequenceEditor, arguments);
},
justSave: function() {
return SPZ.sequenceEditor.saveAndLoadPuzzle.apply(
SPZ.sequenceEditor, arguments);
}
};

apply()仅当方法带有参数时才需要。详情请见MDC .

关于javascript - 为什么我不能将对象的方法保存为另一个对象文字的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1816846/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com