![](/img/trans.png)
[英]Why can I assign unknown properties to literal object in typescript?
[英]Why can't I save an object's methods as properties of another object literal
下面的代码用于说明某些在特定情况下运行的方法,因此可以使用更简单的语法来调用它们。
var callbacks = {alter: SPZ.sequenceEditor.saveAndLoadPuzzle,
copy: SPZ.sequenceEditor.saveAsCopyAndLoadPuzzle,
justSave:SPZ.sequenceEditor.saveAndLoadPuzzle};
但是代码始终返回一个空对象。 我已经用console.log检查了方法的定义。 我还尝试过更改名称,调用一个空对象,然后将属性添加为callbacks.alter等,并尝试了其他无关紧要的更改。
为什么不起作用?
错误在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上的详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.