美文网首页
javascrpt中的call方法

javascrpt中的call方法

作者: 索伯列夫 | 来源:发表于2018-10-05 00:03 被阅读0次

早期的博客4
call方法:

语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。

说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

常用示例:

先做说明:obj1.method1.call(obj2,arguments1,arguments2) 加上call的作用就是把obj1的方法放到obj2上使用,后面的arguments作为参数传入;

例1:

function add(a,b){
  alert(a+b);
}
function sub(a,b){
  alert(a-b);
}
add.call(sub,3,1);

这个例子的意思就是把add的方法放到sub上执行,即用add替换sub,也就是add.call(sub,3,1) == add(3,1) ,所以运行结果为alert(4);

例2:

function Class1(){
  this.name = "class1";
  this.showName = function(){
    alert(this.name);
  }
}

function Class2(){
  this.name = "class2";
}

var c1 = new Class1();
var c2 = new Class2();

c1.showName.call(c2);   //alert("class2)

注意,call的意思是把c1的方法放到c2上执行,原来c2是没有showName()方法的,现在把c1的showName()方法放到c2上执行,所以this.name应该class2;

实现继承:

例3:

function Class1(){
  this.showTxt = function(txt){
    alert(txt);
  }
}

function Class2(){
  class1.call(this);
}

var c2 = new Class2();
c2.showTxt("cc");   //cc

这样Class2就继承Class1,Class1.call(this) 的意思就是使用Class1对象替代this对象,那么在Class2中就是Class1的所有属性和方法了,c2对象能够直接调用Class1的方法以及属性。等于把父类的实例属性复制了一份给子类实例装上了(完全没有用到原型)

例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); 
}    

相关文章

  • javascrpt中的call方法

    早期的博客4call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]...

  • javascrpt的 apply 与 call 方法

    学习ES6 途中遇到用到方法call, 一直是直接拿来用,对期方法和原理并没有得到基本的理解,由于出现频率比较高,...

  • call 方法深入

    1.call方法作用: 让原型上的 call 方法执行,在执行 call 方法时,让调用 call 的方法中的 t...

  • js中方法继承

    call 和 apply JS中的call()和apply()方法

  • call方法

    call方法的作用: 首先让原型上的call方法执行,在执行call方法的时候,让fn方法中的this变为第一个参...

  • call, apply, bind

    call, apply, bind区别 call 首先寻找call方法,最后通过原型链在Function的原型中找...

  • 原生JS实现call、apply、bind原理解析

    (一)call原理解析 如下所示为一个call的使用栗子: call方法改变了add方法中的this指向,指向了第...

  • 2018-12-21 Call 和 Apply

    JS中每个Function对象都有一个apply()方法和一个call()方法 apply 、call 则是立即调...

  • js小知识

    1. call、apply和bind的区别 call、apply和bind方法都是函数对象中的方法,用来动态地改变...

  • js笔记三十八之call方法深入

    call改变this关键字 call方法的作用:首先我们让原型上的call方法执行,在执行call方法的时候,我们...

网友评论

      本文标题:javascrpt中的call方法

      本文链接:https://www.haomeiwen.com/subject/wgufaftx.html