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

高阶函数实现 AOP 问题

高阶函数实现 AOP 问题

SMILET 2018-12-13 14:13:12
书中有一段这样的代码我理解的执行过程是这样的实际输出是这样的所以我不明白的是为什么只输出了一个2__self.apply(this, arguments)这一句应该是执行了2次才对
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

var func = function() {

  console.log(2);

}


func = func.before(function() {

  console.log(1);

})


此时  func  为    beforefn.apply(this, arguments);//console.log(1)

                 return __self.apply(this, arguments);//console.log(2)




func = func.after(function() {

  console.log(3)

})


此时func 为     __self.apply(this, arguments);  

               重点来了! 这里的self也就是this 指向的是上方的 第一个func, 也就是 console出 1 和 2 的函数

               afterfn.apply(this, arguments);//console.log(3)

最终的func是最后return出来的函数,只会执行一次哦。


查看完整回答
反对 回复 2019-01-18
  • 1 回答
  • 0 关注
  • 450 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信