开发者社区> 问答> 正文

JavaScript的call方法应用在prototype上

Array.prototype.call(elements,function(e){//Do something});

最基本的call的使用

func.call(obj,argus) == obj.func(argus); 这个我理解

AClass.call(obj) ; 这个我也能理解

在此基础上,求对一开始那个例子的深入说明 或者文章 都可以

展开
收起
a123456678 2016-07-15 16:13:18 1983 0
1 条回答
写回答
取消 提交回答
  • call是function才有的,call就是调用一个函数,和()括号运算符不一样的是,call可以改变function的上下文,就是内部的this的指向,起到用某个对象代理this运行的目的,同样的有apply。

    Array.prototype.slice.call(nodelist) 就相当于给nodelist下挂一个slice方法,其函数体就是Array的slice,然后用nodelist调用这个slice方法,调用完毕马上把这个方法从nodelist中删除。

    nodelist.slice = Array.prototype.slice;
    nodelist.slice();
    delete nodelist.slice;
    
    function testCall(arg){
       console.log(this.a);
       console.log(arg);
    }
     
    testCall.call({a:2});
     
    testCall.call({a:4},6);
     
    var obj = {a:4,b:5};
     
    testCall.call(obj,10);
    2019-07-17 19:57:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载