Javascript中call()和apply()理解

基础理解

  • 每个函数都包含两个非继承而来的方法:call apply
  • 都是在特定的作用域调用函数,设置函数体内的this指向,以扩展函数赖以运行的作用域
  • apply接受两个参数,一个是运行的作用域,一个是数组参数数组
    applay(函数作用域,参数)
    
    如果参数不是一个数组将会导致报错,如果没有提作用域和参数任何一个参数,那么将导致Global对象作为this.obj
  • call第一个参数是运行的作用域,但是传力给函数的参数必须列举出来
    call(函数作用域,参数1,参数2,参数3)
    
    call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始的上下文改变为thisObj指定的对象,如果没有提供的thisObj参数,那么Global对象别用于thisObj

使用情况

在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数arguments,这个参数是数组类型,并且在调用Person的时候参数的列表是对应一致的(也就是Person和Student的参数列表前两位是一致的) 就可以采用 apply , 如果我的Person的参数列表是这样的(age,name),而Student的参数列表是(name,age,grade),这样就可以用call来实现了,也就是直接指定参数列表对应值的位置(Person.call(this,age,name,grade));

Javascript中call()和apply()理解

上一篇:QuickApp 快应用中 或 nodejs 中 API接品调用时 GBK转UTF8


下一篇:Android 中log的区别