zoukankan      html  css  js  c++  java
  • js中的call和apply方法

    call方法: 

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

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

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

    apply方法: 
    语法:apply([thisObj[,argArray]]) 
    定义:应用某一对象的一个方法,用另一个对象替换当前对象。 
    说明: 
    如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 
    如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

    2、常用实例

    a、

    function add(a,b)  
    
    {  
    
        alert(a+b);  
    
    }  
    
    function sub(a,b)  
    
    {  
    
        alert(a-b);  
    
    }  
    add.call(sub,3,1);   

     这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。

    当然,js的继承还有其他方法,例如使用原型链,这个不属于本文的范畴,只是在此说明call 的用法。说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments

    demo

    var myWrite=document.write;
    myWrite.call(document,43434);/*call 方法使用document替换myWrite方法的当前对象*/


    如果不使用call替换的话会报错
    myWrite(43434);    Illegal invocation
     
  • 相关阅读:
    云原生学习笔记(4)——Pod和容器设计模式
    云原生学习笔记(3)——Kubernetes基本概念
    云原生学习笔记(2)——容器基本概念
    云原生学习笔记(1)——云原生
    JAVA基础系列:JDK目录结构
    Mac 接手步骤
    JAVA基础系列:运行环境
    软件测试系列——Web界面检查点和测试原则
    软件测试系列——白盒测试
    软件测试系列——性能指标
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/7064390.html
Copyright © 2011-2022 走看看