最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

js中call()和apply()改变指针问题的讲解

来源:懂视网 责编:小采 时间:2020-11-27 22:02:03
文档

js中call()和apply()改变指针问题的讲解

js中call()和apply()改变指针问题的讲解:1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。(天生的) 2. 相同点:这两个方法的作用是一样的。 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。 一般来说,this总是指向调用某个方
推荐度:
导读js中call()和apply()改变指针问题的讲解:1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。(天生的) 2. 相同点:这两个方法的作用是一样的。 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。 一般来说,this总是指向调用某个方

call有两个妙用:

  •           1: 继承。
  •           2: 修改函数运行时的this指针。
  • 区别:call和apply的区别在于call的第二个参数可以是任意类型,而apply的第二个参数必须是数组或者arguments

    <script>
     //一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。
     /*
     call方法:
     语法:call(thisObj,arg1,arg2,……,argN)
     定义:调用一个对象的一个方法,以另一个对象替换当前对象
     参数
     thisObj;可选项,将被用作当前对象的对象
     arg1,arg2,……,argN;可选项,将被传递方法参数序列
     说明
     call方法可以用来代替另一个对象调用一个方法。call方法可将一个函数的对象上下文从初始的上下文改变为有thisObj指定的新对象。
     
     如果没有提供thisObj参数,那么Global对象被用作thisObj
     */
     /*
     apply方法:
     语法:apply(thisObj,[arg1,arg2,……,argN])
     定义:应用某一个对象的一个方法,用另一个对象替换当前对象
     */
     //区别:call和apply的区别在于call的第二个参数可以是任意类型,而apply的第二个参数必须是数组或者arguments
     //1.
     function add(a,b) {
     console.log(a+b);
     }
     function sub(a,b) {
     console.log(a-b);
     }
     add.call(sub,3,1);//用add来替换sub,add.call(sub,3,1)==add(3,1),结果是console.log(4);
     //2.
     function Animal(){
     this.name="Animal";
     this.showName=function(){
     alert(this.name);
     }
     }
     function Cat(){
     this.name="Cat";
     }
     var animal=new Animal();
     var cat=new Cat();
     animal.showName.call(cat);
     // 通过call或者apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用。
    结果为alert("Cat"); //3. function Animal(name){ this.name=name; this.showName=function(){ alert(this.name); } } function Cat(name){ Animal.call(this,name); } var cat=new Cat("Black Cat"); cat.showName(); //Animal.call(this)的意思是使用Animal对象代替this对象,那么Cat中就有了Animal的所有方法和属性了,Cat对象就能直接调用Animal的方法和属性了。 //4. function Class10(){ this.showSub=function(a,b){ alert(a-b); } } function Class11(){ this.showAdd=function(a,b){ alert(a+b); } } function Class2(){ Class10.call(this); Class11.call(this); } //使用两个call就实现多继承了。 </script>

    总结

    声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    js中call()和apply()改变指针问题的讲解

    js中call()和apply()改变指针问题的讲解:1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。(天生的) 2. 相同点:这两个方法的作用是一样的。 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。 一般来说,this总是指向调用某个方
    推荐度:
    标签: call js 指针
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top