分析一段JS 动态织入代码
2015-07-27 23:13
836 查看
这里所谓的JS动态织入算是一种模式。
代码最终执行的返回结果是打印出
1
2
3
之前自己一直理解不了打印出123的原因,总以为应该是1223,23便是after()中打印出来的值。
但其实当连续调用func.before().after()的时候,其次after中的var_self=this;其实表示的是before()的返回值,根据代码,返回值是
returnfunction(){ beforefn.apply(this,arguments); return_self.apply(this,arguments); }
带入到整理当中最终执行的便是
(function(){ beforefn.apply(this,arguments); //打印出1 return_self.apply(this,arguments);//打印出2 })();
所以最终的结果也就是123,并且之所以能够链式调用是因为before()返回值也是一个函数,所以也存在after()方法。
相关文章推荐
- JS几种排序算法
- js 获取 repeater 控件值
- 【 D3.js 入门系列 — 4 】 如何使用比例尺( scale )
- angular.js初探
- JS判断对象是否存在的10种方法
- js中this的用法小结
- 关于块级元素,行级元素和javascript的一些总结
- js获取select标签选中的值
- JavaScript动态操作表格实例(添加,删除行,列及单元格)
- Javascript format方法
- js 操作 table
- web优化 js性能高级篇
- js 操作 table
- 学习 JavaScript 最难点之二 -- 理解closure(闭包)
- KnockoutJS的使用及分析
- JavaScript学习笔记2:JavaScript基本概念
- 关于Html,Css,JavaScript知识点的简单梳理
- JS函数式编程【译】2.1 函数式编程语言
- JS常用正则表达式
- Javascript我学之六对象工厂函数与构造函数