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的方法和属性。

  • 相关阅读:
    Java的代理proxy机制
    Java 编译器 javac 笔记:javac API、注解处理 API 与 Lombok 原理
    Java 运行时获取方法参数名
    python 之 list 和 dict 置空
    Python 模块(Module)调用
    Python 模块(Module)及包
    Mybatis中进行批量更新(updateBatch)
    可持久化线段树+主席树+动态主席树
    无向图的割点与割边
    [NOIP2016] 愤怒的小鸟 题解
  • 原文地址:https://www.cnblogs.com/tekkaman/p/2924909.html
Copyright © 2011-2022 走看看