zoukankan      html  css  js  c++  java
  • call vs apply

    call vs apply

       它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别

        apply(thisArg,argArray);

        call(thisArg[,arg1,arg2…] ]);

    即所有函数内部的this指针都会被赋值为thisArg,这可实现将函数作为另外一个对象的方法运行的目的

    apply的说明

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

    call的说明

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

    相关技巧:

         应用call和apply还有一个技巧在里面,就是用call和apply应用另一个函数(类)以后,当前的 
    函数(类)就具备了另一个函数(类)的方法或者是属性,这也可以称之为“继承”。
    看下面示例:

    // 继承的演示 
     function base() { 

        this.member = "我是基类的属性!"
        
    this.method = function() { 
            window.alert(
    "我是基类method方法!"); 
        } 

    function extend() { 
        base.call(
    this); 
        window.alert(member); 
        window.alert(
    this.method); 
         
    this.me = "扩展出来的新属性";
         alert(
    this.me);
    }
    extend();

    上面的例子可以看出,通过call之后,extend可以继承到base的方法和属性。

  • 相关阅读:
    js+servlet实现百度搜索栏下拉框的实现
    python time模块
    dajngo基础
    MySQL解决时区问题:datadrip com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
    数据库连接池
    超星学习通绕开鼠标监控的方法
    centos7 安装python3
    docker命令
    爬虫一
    学习python的第九天笔记
  • 原文地址:https://www.cnblogs.com/tekkaman/p/2924909.html
Copyright © 2011-2022 走看看