高阶函数实现 AOP 问题

书中有一段这样的代码

https://img1.mukewang.com/5c416d630001c8b404850565.jpg

我理解的执行过程是这样的

https://img3.mukewang.com/5c416d71000198ce05880591.jpg

实际输出是这样的

https://img1.mukewang.com/5c416d7b0001455203540111.jpg

所以我不明白的是为什么只输出了一个2

__self.apply(this, arguments)

这一句应该是执行了2次才对


SMILET
浏览 451回答 1
1回答

慕沐林林

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出来的函数,只会执行一次哦。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript