查看: 3309|回复: 9

[有事请教] 为什么重写Game_Action.prototype.itemEffectGrow函数不行

[复制链接]
梦石
0
星屑
1410
在线时间
183 小时
注册时间
2017-1-29
回帖
70
发表于 2018-5-6 13:30:27 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×

重写函数

[pre lang="javascript"]var Game_Action_itemEffectGrow =Game_Action.prototype.itemEffectGrow;

Game_Action.prototype.itemEffectGrow = function() {  
    Game_Action_itemEffectGrow.call(this);  
  
   
};[/pre]


原函数
[pre lang="javascript"]//项目效果生长
Game_Action.prototype.itemEffectGrow = function (target, effect) {
    //目标 增加参数( 效果 数据id , 数学 向下取整( 效果 值1)   )
    target.addParam(effect.dataId, Math.floor(effect.value1));
    //制作成功 (目标)
    this.makeSuccess(target);
};[/pre]



按理来说应该重写后还是调用原来的代码的  为什么会报错呢
梦石
0
星屑
1309
在线时间
904 小时
注册时间
2014-12-4
回帖
349
发表于 2018-5-6 15:02:01 | 显示全部楼层
参数漏了啊 少年
回复

使用道具 举报

梦石
0
星屑
4623
在线时间
1207 小时
注册时间
2016-4-7
回帖
944

开拓者

发表于 2018-5-6 15:06:34 | 显示全部楼层
除了上边说的 js中必须明确用 return 指出返回值
附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing
回复

使用道具 举报

梦石
0
星屑
4716
在线时间
501 小时
注册时间
2013-12-7
回帖
333

极短28参与极短27参与

发表于 2018-5-6 15:31:24 | 显示全部楼层
Game_Action_itemEffectGrow.call(this);  
改成
Game_Action_itemEffectGrow.apply(this, arguments);
回复

使用道具 举报

梦石
0
星屑
4716
在线时间
501 小时
注册时间
2013-12-7
回帖
333

极短28参与极短27参与

发表于 2018-5-6 15:38:19 | 显示全部楼层
我不得不说,你得注释颇具喜感。
回复

使用道具 举报

梦石
0
星屑
1410
在线时间
183 小时
注册时间
2017-1-29
回帖
70
 楼主| 发表于 2018-5-6 17:47:06 | 显示全部楼层
ekmomo 发表于 2018-5-6 15:38
我不得不说,你得注释颇具喜感。

这个不是我注释的  是我下载别的大佬 机译的 原文件
回复

使用道具 举报

梦石
0
星屑
1410
在线时间
183 小时
注册时间
2017-1-29
回帖
70
 楼主| 发表于 2018-5-6 17:50:16 | 显示全部楼层
本帖最后由 风之竹 于 2018-5-6 17:57 编辑
ekmomo 发表于 2018-5-6 15:31
Game_Action_itemEffectGrow.call(this);  
改成
Game_Action_itemEffectGrow.apply(this, arguments);


大佬apply 和all  什么区别啊
回复

使用道具 举报

梦石
0
星屑
1410
在线时间
183 小时
注册时间
2017-1-29
回帖
70
 楼主| 发表于 2018-5-6 17:55:26 | 显示全部楼层
本帖最后由 风之竹 于 2018-5-6 17:58 编辑
ekmomo 发表于 2018-5-6 15:38
我不得不说,你得注释颇具喜感。


QQ图片20180506175254.png


大佬像这种原函数带需要参数的  是不是 重写再调用的时候都要加上,apply(this,arguments)而不是,all(this)吗
回复

使用道具 举报

梦石
0
星屑
4716
在线时间
501 小时
注册时间
2013-12-7
回帖
333

极短28参与极短27参与

发表于 2018-5-6 18:08:56 | 显示全部楼层
本帖最后由 ekmomo 于 2018-5-6 18:10 编辑

是call不是all。
这俩都是改变this指向用得,你可以理解为把代码复制到这里来。
作用一摸一样,就是写法不一样。call第二个形参及以后是原函数的参数,而apply只接受两个参数,第一个是this指向,第二个是以数组的形式传递原函数参数。而arguments是绝大部分函数本身都有的一个伪数组(Function自带的,它里面就是各个实参),所以写apply(this,arguments)更方便,也不容易出错。

综上,是的,带参数的都推荐这么写。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部