为了账号安全,请及时绑定邮箱和手机立即绑定

javascript 在一个函数调用之前调用其它方法

javascript 在一个函数调用之前调用其它方法

呼唤远方 2018-09-05 09:09:49
我想要实现这样一个效果:function f = function(){     console.log(1); } f.before(function(){     console.log(2); }) f(); //我想要这里输出为:2 1请问before函数要怎么实现?
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

Function.prototype.before = function() {

  for (var i=0; i<arguments.length; i++) {

    if (typeof arguments[i] === 'function') {

      arguments[i]()

    }

  }

  this()

}

在chrome的控制台测试可以达到你想要的效果,,
不过可能会有兼容性问题

更新

好像没什么意思,不过还是折腾了一下

Function.prototype.before = function() {

  this.beforeArrFunc = []

  for (var i=0; i<arguments.length; i++) {

    if (typeof arguments[i] === 'function') {

      this.beforeArrFunc.push(arguments[i])

    }

  }

}


Function.prototype.execute = function() {

  for (var i=0; i<this.beforeArrFunc.length; i++) {

    this.beforeArrFunc[i]()

  }

  this()

}


var a = function() {

  console.log(1)

}


a.before(function() { console.log(2) })


a.execute()

这样的缺点是,具体调用时需要另一个实例方法来辅助
好处就是也可以直接调用a(),这样不会调用到before function

查看完整回答
反对 回复 2018-10-06
  • 1 回答
  • 0 关注
  • 913 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号