函数的四种四种模式

1.函数模式

    

function test(){

    console.log(this)            

}

test();

    此时this指的是window全局对象

2.方法模式

 
 

 
 

var obj ={

    test:function(){console.log(this)}

}

obj.test();

 
 

扫描二维码关注公众号,回复: 2233621 查看本文章

this指的就是调用这个方法的对象

3.构造函数模式

 
 

function Person(){

    console.log(this)

}

var p = new Person();

this指的就是new 创建出来的新对象

4.上下文模式

 
 

上下文调用模式中,可以修改this的值,就是可以修改函数的调用方式

调用方式:call,apply

  •  apply
函数.apply(对象,[函数需要参数列表])
如:sayHello.apply(obj,[1,2])
  •  call
函数.call(对象,[arg1],[arg2],[arg3],...,[argn])
如:sayHello.call(obj,1,2)

        注:api文档中‘[ ]’内的参数列表可有可无

call和apply的区别
1.第一个参数都是要把this修改成的对象
2.当函数需要参数的时候,apply是用数组进行传递
3.而call使用单个的参数进行传递
    *call用于确定了函数的形参有多少个的时候使用
    *apply多用于确定了函数的形参不确定的使用
    *apply方法和call方法第一个参数为null的时候,都表示函数调用模式,也即是this指向window
    *当apply和call方法第一个参数为值类型的时候,会将值类型转换为对应的对象(引用类型) 然后赋值给this
    *当传入的第一个参数为null或者undefined的时候,会把this赋值为window

猜你喜欢

转载自blog.csdn.net/sinat_41191623/article/details/79897120