zoukankan      html  css  js  c++  java
  • call和apply的使用

    call和apply的作用1:调用方法,和直接调用的效果是一样的

    function test() {
        console.log('test')  
    }
    
    test()  // test
    test.call()  // test
    test.apply() // test

    call和apply的作用2:改变this的指向

    call和apply传入的第一个参数,把参数的this指向这个传入的实参

    test(){
        console.log(this)  
    }
    
    var obj = {name:'zs'}
    test()  // this指向window
    test.call(obj)  // this指向obj
    test.apply(obj)  // this指向obj

    call和apply可以传入其他参数(非第一个参数),传参方式不同

    call传入的其他参数,直接传。apply需要传数组

    test(a,b){
        console.log(a)
        console.log(b)
    }
    
    var obj =  {name:'zs'}
    
    test.call(obj,2,3)   // call直接传2和3,打印2 ,3
    test.apply(obj,[2,3])  // apply传数组,打印2,3

    call的实际用法:

    获取来的dom元素,不具有数组的特性,不能使用数组的方法,例如pop,push等

    可以通过一个方法把获取来的dom元素转换成数组,使它可以使用数组的方法

    Array.prototype.slice.call(document.querySelector('div'))

    这样获取的dom元素就是一个数组,可以使用数组的方法

  • 相关阅读:
    ACM进阶计划
    《算法竞赛入门经典》习题——Chapter 3
    js运算符
    Javascript的数据类型简述
    JS事件处理和事件对象
    对一道代码的看法
    SOA不是Web Service
    梳理一下最近要重点好学的东西
    ReportViewer使用手册
    Lesson 9
  • 原文地址:https://www.cnblogs.com/luguankun/p/12494411.html
Copyright © 2011-2022 走看看