查看: 4301|回复: 5

[已经解决] 请问JS的alias咋写?

[复制链接]
梦石
0
星屑
724
在线时间
685 小时
注册时间
2009-5-29
回帖
332
发表于 2015-10-26 07:57:18 来自手机 | 显示全部楼层 |阅读模式

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

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

×
JS没有类的方法,全方法继承倒是好弄,但是alias怎么写。。

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2015-10-26 08:23:13 | 显示全部楼层
  1. var alias_method_name = old_method_name
  2. var old_method_name = function() {
  3.     alias_method_name()
  4.     console.log('hello world')
  5. }
复制代码

点评

alias_method_name.apply(this, arguments);  发表于 2015-11-24 12:07

评分

参与人数 1梦石 +1 收起 理由
余烬之中 + 1 你是个好人

查看全部评分

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-10-26 10:33:45 | 显示全部楼层
参考默认插件,比如 TitleCommandPosition.js

点评

解释起来太麻烦,我只能说不懂的看文档……  发表于 2015-10-26 19:34
不过原理貌似没看懂,能稍微解释一下吗?  发表于 2015-10-26 19:31
谢谢……  发表于 2015-10-26 19:31
占位符,会被替换掉。你直接输出我 eval 的代码好了  发表于 2015-10-26 19:28
请问那个<和>是什么意思……  发表于 2015-10-26 19:16
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2015-10-26 11:46:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-10-26 12:20:32 | 显示全部楼层
晴兰 发表于 2015-10-26 11:46
Object.prototype.alias = function(a, b){
  this.prototype[a] = this.prototype
}
  1.     function defAfter(klass, method_name, callback) {
  2.         var old = klass.prototype[method_name];
  3.         if (typeof(old) !== "function") {
  4.             throw("undefined method " + method_name + " for " + klass.name);
  5.         }
  6.         klass.prototype[method_name] = function() {
  7.             old.apply(this, arguments);
  8.             callback.apply(this, arguments);
  9.         }
  10.     }
复制代码
我当时是这么黑的。如果不主动报错的话,这句话就失效了……

点评

变量当然可以有别名 alias $a $b  发表于 2015-10-26 12:24
其实如果不是function……可以考虑一个defineProperty过去  发表于 2015-10-26 12:24
回复

使用道具 举报

梦石
0
星屑
50
在线时间
119 小时
注册时间
2015-1-5
回帖
118
发表于 2015-10-27 05:59:25 | 显示全部楼层
本帖最后由 MonsterJohnCN 于 2015-11-26 18:50 编辑

[pre lang="javascript"]
var alias_method_name = old_method_name;
old_method_name = function() {
    alias_method_name.call(this);
    console.log('hello world');
}
[/pre]

如果是带参数:
paramA - 原方法的参数
paramB - 原方法的参数
paramDIY - 你自定义传入的新参数

[pre lang="javascript"]
var alias_method_name = old_method_name;
old_method_name = function(paramA,paramB,paramDIY) {
    alias_method_name.call(this,paraA,paramB);
    console.log('hello world');
    console.log(paramDIY);
}
[/pre]

(谢谢@余烬之中 提出补充带参数的alias)

点评

不考虑一下带参数的情况吗嗯哼~  发表于 2015-11-24 12:08

评分

参与人数 1梦石 +1 收起 理由
余烬之中 + 1 你是个好人

查看全部评分

实力跳票,根本停不下来…… | bgpCore.js | 《下一站》2号DEMO | 插件开发无限延期中……正在研制适用性更强的普适模板,不再输出单体插件……
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部