js的call函数"源码"
来源:互联网 发布:php固定资产管理系统 编辑:程序博客网 时间:2024/05/16 14:31
暂时不支持复杂的变量类型。。。
Function.prototype.call=function(x){ x = x || {}; x['fn'] = this; var args = '';//参数列表 var type; for (var i = 1; i<arguments.length;i++) { if (typeof arguments[i] === 'string') {//参数是字符串,需要在两边加引号,因为在拼接参数的时候会被丢掉 type = '"'+arguments[i] + '"'; } else if (typeof arguments[i] === 'function') {//参数是函数的话,"反编译"出函数的代码 type = arguments[i].toString(); } else if (typeof arguments[i] === 'object' ) {//数组和对象可能含有复杂的组合类型数据,可以通过遍历变量转成字符串 if (/function Array()/.test(arguments[i]['constructor'])) {//参数是数组则在数组两边加上[,] type = "[" + arguments[i] + "]"; } else { type = JSON.stringify(arguments[i])//对象的话,json化,然后执行的时候反json化 } } else { type = arguments[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.call({d:1},2,'s',[1,2,3],{s:1},function() {})
0 0
- js的call函数"源码"
- js的call函数
- js 的 apply / call 函数
- js prototype call 函数的讲解
- js中call函数
- js中的call函数
- JS 函数 this,call
- js function.call()函数
- 【JS--基础--函数】--函数的通用方法-call()和apply()
- 关于js的call函数和apply函数
- JQuery call函数,用于查看JQuery的源码
- js的call和apply函数的使用
- 利用js的call函数,实现this的改变
- JS Call方法 函数使用说明
- JS Call方法 函数使用说明
- JS 函数call和apply
- firefox下ExternalInterface.call调用js的alert函数问题
- 关于js中call和apply函数的应用
- python基本爬虫实现
- 程序员面试金典: 9.13 C和C++ 13.1 用C++方法,打印输入文件的最后K行。
- UGUI研究之Sprite
- WINDWOS编程学习1:WINMsg
- 微信小程序 —— 开发者初步
- js的call函数"源码"
- 全排列
- WINDOWS编程学习2:C windwos编程中常用的头文件的说明
- WINDWOS编程学习3:windwos HolleMessage程序说明
- 替换空格
- Unity3D手游开发日记(11) - 基于共享骨骼简单高效的换装方案
- js的apply函数"源码"
- Mac下搭建React Native iOS开发环境
- 函数指针的正向调用案例