apply用法总结和使用场景

apply是绑定this到指定函数或类,也可以说把函数或者类的方法和属性给到当前作用域。

1,使用apply实现继承

   function A(name, age){
    	this.name = name;
    	this.age = age;
    }

    function B(name, age, time){
    	A.apply(this,[name])  //这里的name必须加上[]
    }

    const b = new B('继承');
    console.log(b)

2,使用apply实现多重继承

function Class10(){
  this.showSub = function(a,b){
        alert(a - b);
    }   
}

function Class11(){
  this.showAdd = function(a,b){
        alert(a + b);
    }  
}

function Class12(){
  Class10.apply(this);
  Class11.apply(this);   
  // Class10.call(this);
  //Class11.call(this);  
}

var c2 = new Class12();
c2.showSub(3,1);    //2
c2.showAdd(3,1);    //4

3,apply使用时传参规则

fn.apply(this,array)

在执行过程中,array参数会被转化成一个一个参数传递给函数fn

fn.apply(this,[params1,params2,...])
//相当于

fn(params1,params2,...)//这里的this指向执行fn函数的作用域

4,apply绑定this和绑定null

   function C(name, age){
    	console.log(this.name)
    }

    var name = 'windowname'
    var myObject = {name:"myA",age:"myB"};
    C.apply(myObject) //myA
    C.apply(null)//windowname

     function D(){
    	this.name = '我是D空间'
    	C.apply(this)
    }

    D();//我是D空间

 

 

 

 

你可能感兴趣的:(js)