js的apply函数"源码"
来源:互联网 发布:php固定资产管理系统 编辑:程序博客网 时间:2024/06/05 14:40
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 a(a){ console.log(this,arguments)}a.apply(null,[1,2])
0 0
- js的apply函数"源码"
- js 的 apply / call 函数
- JS:apply()二、函数的上下文
- 【JS--基础--函数】--函数的通用方法-call()和apply()
- 关于js的call函数和apply函数
- js的call和apply函数的使用
- js中apply函数用法
- JS 函数call和apply
- Js 的 apply()、call()
- 关于js中call和apply函数的应用
- js中bind、call、apply函数的用法
- js中bind、call、apply函数的用法
- js中bind、call、apply函数的用法
- js中bind、call、apply函数的用法
- js中bind、call、apply函数的用法
- js中apply和Math.max()函数的问题
- js中bind、call、apply函数的用法
- js中bind、call、apply函数的用法
- 全排列
- WINDOWS编程学习2:C windwos编程中常用的头文件的说明
- WINDWOS编程学习3:windwos HolleMessage程序说明
- 替换空格
- Unity3D手游开发日记(11) - 基于共享骨骼简单高效的换装方案
- js的apply函数"源码"
- Mac下搭建React Native iOS开发环境
- 函数指针的正向调用案例
- centos7.2安装dcos
- Android 低版本 volley 401 错误处理
- Nt**、Zw**和Rtl** 开头的函数介绍
- datagrid的columns属性支持对象的子属性(类似user.userName)的方法
- C++文件读写详解(ofstream,ifstream,fstream)
- 面向对象