call/apply是函数原型定义的方法(Function.prorotype),在使用时要注意第一个形参(args[0]),一定是指向函数所要挂载的上下文对象--context,若对象非必须,则要将第一个参数置为null或undefined,不显示传入context,按照call/apply的实现过程,会将其他形参(args[1])作为调用上下文使用,很容易造成其他形参undefined错误,出错场景如下:

function myMatch(str){
        var rst = str.replace("{{","").replace("}}","");
        return rst;
    }

//给Array原型扩展自定义方法
    Array.prototype.myEach = function(f){
        var rst = [];
        for( var i=0;i<this.length;i++ ){
            var macther = f.call( this[i]);
            //var macther = f(this[i]);
            rst.push( macther );
        }
        return rst;
    }

var arr = ["{{name}}","{{age}}"];

console.log( arr );

console.log( arr.myEach( myMatch ) );

出错原因:在调用call的时候,this[i]被当做了挂在上下文context,真正有用的形参如str,则是undefined!

解决方案:

1.在无明显context需求下,可以不用call/apply形式,直接用f(this[i]);

2.无必要使用context,但使用call/apply,请将context置为null/undefined.

最新文章

  1. java web学习总结(六) -------------------servlet开发(二)
  2. HTTPS原理详解
  3. delphi IOS 获取电池信息
  4. 套路!从Ruby 到 Cocoapods的发布
  5. jdk+myeclipse配置安装相关步骤
  6. Could not initialize class sun.awt.X11GraphicsEnvironment
  7. php中$this、static、final、const、self 等几个关键字的用法
  8. android4.4内核移植
  9. InitInheritedComponent的执行过程
  10. 几个 jQuery 小提示和技巧
  11. python+request+robot framework接口自动化测试
  12. PHP学习笔记 02 之文件上传
  13. Java的常量和变量
  14. 决AndroidStudio 安卓模拟器安装在D盘问题
  15. java面向对象编程(七)--四大特征之多态
  16. python第三十七天--异常--socket
  17. 《Linux内核设计》第17章学习笔记
  18. POJ 3421 X-factor Chains (因式分解+排列组合)
  19. 我的第一个react native
  20. 机房ping监控 smokeping+prometheus+grafana

热门文章

  1. 鸡肋的JdbcRDD
  2. CSS中:overflow:hidden的作用
  3. HDU 4277 USACO ORZ(暴力+双向枚举)
  4. debug找到source lookup path以及,debug跑到另外的解决办法
  5. 64位windows上访问64位oracle 12c
  6. 2016/3/27 分页 共X条数据 本页x条 本页从x-y条 x/y页 首页 上一页 123456 下一页 末页 pagego echo $page-&gt;fpage(7,6,5,4,3,2,1,0);
  7. ABAP 检查全角半角
  8. 网络驱动移植之net_device结构体及其相关的操作函数
  9. [USACO 2017DEC] Greedy Gift Takers
  10. 表单中的readOnly 和disabled