zoukankan      html  css  js  c++  java
  • 彻底搞懂 call() 和 apply() 方法

    call 和 apply 理解前提要明白 this

    书上说的是: 改变this指向(看起来很高深)

    步入正题:

    一般情况下, 我们定义一个函数:

    function test () {
        console.log(123);        
    }

    然后会这样去调用:

    test() // 打印123

    但是你还可以试试这样调用:

    test.call() // 效果和直接调用一样, 其实这才是JS内部调用函数的方式.  apply() 一样

    所以, 可以把 call 当作一个对象方法

    如果没有参数默认就是直接执行函数,

    参数可以是一个, 或者多个

    一个的话 :

    就是书上说的改变 this 指向, 把函数内部所有的 this 变成那个参数

    如果是多个参数 :

    第一个当作 this 指向, 其余的当作参数传递

    举个栗子 : 

    定义一个构造函数: 

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

    可以这样用:

    var person1 = new Person('洋哥', 20);

    也可以这样用:

    var person2 = {};
    Person.call(person2, '洋哥', 20) // 效果和上面的一模一样

    // person2 对象传入, 并且执行 Person 构造函数

    apply() 和call() 一模一样, 只是call 传入参数方式是直接传入

    apply() 就两个参数, 第一个是 this 指向, 第二个是一个数组, 里面是参数

  • 相关阅读:
    [DDCTF 2019]homebrew event loop
    [极客大挑战 2019]FinalSQL
    $[HAOI2008]$硬币购物
    $2018/8/19 = Day5$学习笔记 + 杂题整理
    $2018/8/16 = Day2$学习笔记$+$杂题整理
    [NOIp2009] $Hankson$の趣味题
    2018清北学堂夏日培训游记
    2.数组的声明和创建
    1.什么是数组?
    15.递归
  • 原文地址:https://www.cnblogs.com/jedenzhan/p/9518446.html
Copyright © 2011-2022 走看看