【发布时间】:2019-10-22 10:56:55
【问题描述】:
我有一个这样写的模块(我们称之为“信息”)
/* infos module */
define([], function() {
'use strict';
return function() {
// some code here
return {
text: 'hehe',
isEditable: function() {
return false;
}
}
}
});
这个模块在另一个模块中是必需的,并像这样调用 infos().isEditable() 并允许我显示或隐藏一个按钮。
我有可能做一个基本信息模块的 mixin (magento2) 并修改这个模块中的一些方法。
我正在尝试修改 isEditable() 以返回 true,但我只能在 MIXIN 中这样做。
这是我正在尝试做的简化版本: https://jsfiddle.net/mu1oykad/
【问题讨论】:
-
重新分配
returnObject? -
@CertainPerformance - 很难看出它如何适合“不修改函数”。 :-) 我的意思是,当然,您说的是替换函数,但是...
-
是的,因为函数代码在声明后是不可变的,所以我唯一能想到的其他事情就是重新分配它
-
“不修改函数” 显然我们必须修改一些东西。有什么限制?就此而言,您指的是什么功能我们无法修改,
returnObject或isEditable? 为什么我们不能修改函数?为什么首先需要这样做? -
该函数无法访问,它在另一个模块中定义并由另一个模块调用,我只需要在包装函数中拦截它。
标签: javascript overriding magento2 mixins magento-2.3