Project1
标题:
如何才能把这两步封装成一个方法而效果不变
[打印本页]
作者:
kklt
时间:
2020-8-23 01:12
标题:
如何才能把这两步封装成一个方法而效果不变
本帖最后由 kklt 于 2020-8-23 02:28 编辑
let _Scene_Title_prototype_update = Scene_Title.prototype.update;
Scene_Title.prototype.update = function() {
_Scene_Title_prototype_update.call(this)
};
复制代码
尝试这么做
let fixFunc = function (func ) {
let _func = func;
return func = function() {
_func.call(this)
};
}
复制代码
作者:
enghao_lim
时间:
2020-8-23 01:46
没看明白问题……用你定义的fixFunc还是能够封装,只是没什么意义。
Scene_Title.prototype.update = fixFunc(Scene_Title.prototype.update)
复制代码
作者:
kklt
时间:
2020-8-23 02:51
enghao_lim 发表于 2020-8-23 01:46
没看明白问题……用你定义的fixFunc还是能够封装,只是没什么意义。
感谢.
我的fixfunc方法调了以后,如果要追加定义xxx函数,就要再写一遍 "_xxx"否则就失去了写"_xxx"的初衷了.是这样所以说没意义,对把.
还有这里的_func.call(this)里的this,当前环境下是指向window.
而构造函数new了以后就是指向新new出的对象.(所以这里的this没问题also?)
作者:
kklt
时间:
2020-8-23 02:57
enghao_lim 发表于 2020-8-23 01:46
没看明白问题……用你定义的fixFunc还是能够封装,只是没什么意义。
要写的话是不是可以这样写
function func0 (func ) {
let _func = func;
return _func;
};
Scene_Title.prototype.update = function() {
func0.call(this)
};
复制代码
作者:
enghao_lim
时间:
2020-8-23 14:33
本帖最后由 enghao_lim 于 2020-8-23 14:55 编辑
要追加定义如下就行了,你的fixFunc只是多一层封装,并没有实现追加。
let _Scene_Title_prototype_update = Scene_Title.prototype.update;
Scene_Title.prototype.update = function() {
_Scene_Title_prototype_update.call(this);
追加的定义.call(this);
};
复制代码
如果要封装就得如下:
Scene_Title.prototype.update = function(func) {
let funcOri = func;
return function() {
funcOri.call(this);
console.log("这里开始追加");
};
}(Scene_Title.prototype.update);
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1