zoukankan      html  css  js  c++  java
  • JS apply和call

    前言

    很基础,放在这里是为了整理前端js的思维导图。

    正文

    方法定义

    语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])

    定义:调用一个对象的一个方法,以另一个对象替换当前对象。
    说明:

    call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
    如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
    

    语法:apply([thisObj[,argArray]])
    定义:应用某一对象的一个方法,用另一个对象替换当前对象。
    说明:

    如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
    如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
    

    例子

    <script>
        function add(a,b)
        {
            alert(a+b);
        }
        function sub(a,b)
        {
            alert(a,b);
        }
        add.call(sub,4,5);
    </script>
    

    这段代码大多数网站都见过吧,对于新手来说可能会引起误导,这到底证明了啥子东西呢?什么也没有证明啊,既然有关this,那我就这样改一下。

    function add(a,b)
    {
    //输入this
        console.log(this);
        alert(a+b);
    }
    

    打印this

    ƒ sub(a,b)
     {
     alert(a,b);
     }
    

    好的,那么后面那个就相当于替换了arguments。这样整个函数的历程我可以这么理解,这个孩子脱离了他的父母(this)的约束,以及丢弃了给他的东西(arguments ),得到了独立然后被社会(新的this)约束了再社会上得到了新的收获(新的arguments )。

  • 相关阅读:
    USACO 2.1 Hamming Codes
    USACO 2.1 Healthy Holsteins
    USACO 2.1 Sorting a Three-Valued Sequence
    USACO 2.1 Ordered Fractions
    USACO 2.1 The Castle
    USACO 1.5 Superprime Rib
    1145: 零起点学算法52——数组中删数II
    1144: 零起点学算法51——数组中删数
    1143: 零起点学算法50——数组中查找数
    1142: 零起点学算法49——找出数组中最大元素的位置(下标值)
  • 原文地址:https://www.cnblogs.com/aoximin/p/13129969.html
Copyright © 2011-2022 走看看