前端学习(七)HTTP源码解读之基础知识
来源:互联网 发布:什么是usb网络转换器 编辑:程序博客网 时间:2024/06/05 21:00
什么是作用域?
作用域和函数访问变量的能力有关
局部作用域:
全局作用域:
什么是上下文?
和this这个关键字有关,当前可执行代码的引用。
this指向函数拥有者,全局上下文对象global(浏览器中的window)。
call:改变执行上下文,参数列表
apply:参数数组
apply源码:
Function.prototype.apply=function(x){ x = x || {};//防止this为null x['fn'] = this; var list = arguments[1] || []; var args = '';//参数列表 var type; for (var i = 0; i<list.length;i++) { if (typeof list[i] === 'string') {//参数是字符串,需要在两边加引号,因为在拼接参数的时候会被丢掉 type = '"'+list[i] + '"'; } else if (typeof list[i] === 'function') {//参数是函数的话,"反编译"出函数的代码 type = list[i].toString(); } else if (typeof list[i] === 'object' ) { if (/function Array()/.test(list[i]['constructor'])) {//参数是数组则在数组两边加上[,] type = "[" + list[i] + "]"; } else { type = JSON.stringify(list[i])//对象的话,json化,然后执行的时候反json化 } } else { type = list[i];//数字类型 } args = args + type +','; } args = args.slice(0,args.length-1);//去掉最后的逗号 var q = new Function('var x = arguments[0];x.fn('+args+')')//new Function的时候作用域是独立的,无法访问call里面的x,所以需要传进去 q(x)}function parse_Array_Object(arg) { //可以npm install traverse-deep和结合js的map函数进行相应处理,主要是遍历arg的每一个元素,进行类型判断,然后返回相应的字符串 //to do ..}function test(arg){ console.log(this,arguments)}test.apply(null,[1,2])
阅读全文
0 0
- 前端学习(七)HTTP源码解读之基础知识
- AFNetworking 3.0 源码解读(七)之 AFAutoPurgingImageCache
- 前端技术学习之选择器(七)
- 前端学习之CSS基础知识(2)
- 学习C#基础知识(七)
- dubbo源码深度解读七之registery模块
- Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager)
- 前端学习之路css(04)-基础知识
- 前端学习之路css(05)-基础知识
- 前端学习之路css(06)-基础知识
- 前端学习之路css3(01)-基础知识
- 前端学习之路css3(02)-基础知识
- 前端学习之路css3(03)-基础知识
- iOS转前端之HTML基础知识学习
- pycaffe学习之(一):io.py源码解读
- android-async-http源码解读(一)
- android-async-http源码解读(二)
- spring学习笔记之DispatcherServlet源码解读
- Python爬虫模拟真实登录案例系列之十二
- java.util.Date类型日期增减的方法
- js脚本测试
- start-all.sh出现Error:Cannot find configuration directory问题
- Android学习(十九)Fragment介绍
- 前端学习(七)HTTP源码解读之基础知识
- 由浅入深分析mybatis通过动态代理实现拦截器(插件)的原理
- Git常用命令大全
- [lintcode]二叉树的层序遍历
- Java-两个数组合并,并排序打印
- 计算机为什么使用补码来存储数据
- 分治算法(概念、特性、步骤、复杂度分析、经典例子)
- 55. Jump Game
- oracle得到任意2个经纬度之间的距离