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

查看:193
本文介绍了前端 - javascript 在一个函数调用之前调用其它方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我想要实现这样一个效果:

function f = function(){
    console.log(1);
}
f.before(function(){
    console.log(2);
})
f(); //我想要这里输出为:2 1

请问before函数要怎么实现?

解决方案

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

这篇关于前端 - javascript 在一个函数调用之前调用其它方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆