调用另一个方法之前或之后的javascript fire方法

时间:2015-10-01 16:05:29

标签: javascript events prototype-programming

我想知道使这个概念有效的常用方法是什么:

function Abc () {
  var beforeMethod = function (e) {
    console.log(e);
  };

  this.before('bob ana', beforeMethod);
}

Abc.prototype.ana   = function () { console.log('ana'); }

Abc.prototype.bob   = function () { console.log('bob'); }

Abc.prototype.maria = function () { console.log('maria'); }

//

var abc = new Abc();

abc.ana();

应该在调用beforeMethodbob之前致电ana

2 个答案:

答案 0 :(得分:1)

很快:

需要进行测试和保证,但我认为这样做! 我还没有理解你的var el = document.getElementById('debug'); var $l = function(val) { console.log(val); el.innerHTML = el.innerHTML + '<div>' + val + '</div>'; }; //___________________________________________________________________ var Before = function( methods , func , context){ methods.split(' ').map(function(m){ var ori = context[m]; if(ori){ context[m] = function(){ func.call(context , m); return ori.apply(context , arguments); }; } }); }; var Abc = function () { var beforeMethod = function (e) { $l('from beforeMethod : ' + e); }; Before('bob ana ', beforeMethod , this); }; Abc.prototype.ana = function () { $l('from ana '); }; Abc.prototype.bob = function () { $l('from bob '); }; Abc.prototype.maria = function () { $l('from maria '); }; var abc = new Abc(); abc.ana(); abc.maria(); abc.bob();是什么意思所以我把所谓的方法名称放进去了!

&#13;
&#13;
<div id='debug'>Debug
  <div>
&#13;
{{1}}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我认为这样做的方法是将旧的原型函数保存在属性中。

function Abc() {
    this.oldana = this.prototype.ana;
    this.oldbob = this.prototype.bob;
    this.prototype.ana = function(e) {
        console.log(e);
        this.oldana();
    }
    this.prototype.bob = function(e) {
        console.log(e);
        this.oldbob();
    }
}