zoukankan      html  css  js  c++  java
  • 【复盘会】如何直观理解JS里的 apply() 和 call()? 如何手写?

    最近闲下来,有些基础知识自己琢磨着复盘一下,写出来巩固一下

    Q:apply() 和 call() 作用是什么? 结构是什么?

    A:作用是改变函数体内部this指向。

       通俗点就是通过apply和call 劫持另外一个对象的方法和继承其所有属性;

        其中apply结构为 Function.apply(obj,args)方法能接收两个参数

      1、obj:这个对象将代替Function类里this对象
           2、args:这个是类数组(可以理解为数组),它将作为参数传给Function(args-->arguments)

      其中apply结构 Function.call(obj,[param1[,param2[,…[,paramN]]]])
      1、obj:这个对象将代替Function类里this对象
      2、params:这个是一个参数列表  

    Q:有何区别?

    A: 传参不一样,apply()第二个参数为数组,call() 的第二个参数为列表

    Q: 如何用?

    A: 1、实现继承

      栗子:

      

       2.改变函数的作用域

          

      

    Q: 如何手写call() 和 apply()

    A: 栗子 call 和 apply  我们知道无非就是传入值的类型不一样,所以我们只需改变传入值类型即可

    1、call()

    2、apply()

     

    结束语,JS博大精深,学无止境,我们在不断汲取新语法, 新框架时候, 基础也不能忘, 毕竟这是一切知识的奠基石。

  • 相关阅读:
    LINX中的各种alloc
    Enea LINX代码分析之二(ECM_RX)
    Enea LINX代码分析之一
    看代码和写代码还是很不同的
    sctp bind
    sockaddr和sockaddr_in
    pthread条件变量
    System V IPV & Posix IPC(摘自Unix网络编程卷2)
    [宽度优先搜索] FZU-2150 Fire Game
    [字符哈希] POJ 3094 Quicksum
  • 原文地址:https://www.cnblogs.com/gong-ping/p/12760877.html
Copyright © 2011-2022 走看看