Project1

标题: 请问JS的alias咋写? [打印本页]

作者: saturnfjh    时间: 2015-10-26 07:57
标题: 请问JS的alias咋写?
JS没有类的方法,全方法继承倒是好弄,但是alias怎么写。。
作者: 喵呜喵5    时间: 2015-10-26 08:23
  1. var alias_method_name = old_method_name
  2. var old_method_name = function() {
  3.     alias_method_name()
  4.     console.log('hello world')
  5. }
复制代码

作者: taroxd    时间: 2015-10-26 10:33
参考默认插件,比如 TitleCommandPosition.js
作者: 晴兰    时间: 2015-10-26 11:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: taroxd    时间: 2015-10-26 12:20
晴兰 发表于 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.     }
复制代码
我当时是这么黑的。如果不主动报错的话,这句话就失效了……
作者: MonsterJohnCN    时间: 2015-10-27 05:59
本帖最后由 MonsterJohnCN 于 2015-11-26 18:50 编辑

JAVASCRIPT 代码复制
  1. var alias_method_name = old_method_name;
  2. old_method_name = function() {
  3.     alias_method_name.call(this);
  4.     console.log('hello world');
  5. }


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

JAVASCRIPT 代码复制
  1. var alias_method_name = old_method_name;
  2. old_method_name = function(paramA,paramB,paramDIY) {
  3.     alias_method_name.call(this,paraA,paramB);
  4.     console.log('hello world');
  5.     console.log(paramDIY);
  6. }


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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1