`

call理解

 
阅读更多

 call使用情况
    1.class.call(obj)
        让obj进入class的上下文执行,替代this指针。
    2.class.call(class)

    3.obj1.method.call(obj2);
     改变obj1.method方法中上下文执行,替代this指针。(只改变了method方法中的this,没有改变class中的this)

    4.fn.call(fn) 与 class.call(class) 一样,只是 没有this,也就是单纯的改变函数的执行环境。
       function add(a,b){
            alert(a+b);
       }
       function sub(a,b){
            alert(a-b);
       }

       add.call(sub,3,1); //4  add中没有this,所以sub直接忽略
    5.*此引用和第4点差不多,只是有一点变化,fn也就是函数,每个函数都属于Function.prototype,所以都有call apply方法。
       function f1(){
            alert(1);
       }
       function f2(){
            alert(2);
       }
       var f3 = f1.call;
       f1.call(f2);//1
       f3.call(f2);//2    等效 f1.call.call(f2)


        /***下面例子复杂一点***/
        function jsCall(oThis){
            var argsNew = [];
            for(var i=1;i<arguments.length;i++){
                argsNew.push(arguments[i]);
            }

           // alert(this);
            return this.apply(oThis,argsNew);   //这里的this就是当前执行函数
        }
        Function.prototype.jsCall = jsCall;


        function f1(a){
            alert([this,a,'f1']);

        }
//        f1.jsCall = function (oThis){
//            var argsNew = [];
//            for(var i=1;i<arguments.length;i++){
//                argsNew.push(arguments[i]);
//            }
//
//            // alert(this);
//            return this.apply(oThis,argsNew);
//        }

        function f2(a){
            alert([this,a,'f2']);
        }
//        f1(33);
        f1.jsCall(f2,11);         //f2直接替换f1中的this

 


 

分享到:
评论

相关推荐

    CALL的基础理解

    CALL的基础理解

    JavaScript中函数(Function)的apply与call理解

    主要介绍了JavaScript中函数(Function)的apply与call理解,本文讲解了JavaScript函数调用分为4中模式以及通过apply和call实现扩展和继承两方面,需要的朋友可以参考下

    CALL调试测试工具,游戏调用CALL工具

    首先,我们要理解什么是CALL指令。在汇编语言中,CALL指令用于跳转到指定的内存地址执行代码,通常是调用一个子程序或函数。在高级编程语言中,如C++或Java,虽然语法不同,但其概念类似,用于调用函数或方法。CALL...

    array.prototype.silce.call 理解分析

    Array.prototype.slice.call(thisArg[, arg1[, arg2[, …]]])成员介绍: Array 数组对象 prototype [property]是javascript中对象的属性,用来返回对象的原型引用,可以动态的给此添加方法和属性,对象如array,...

    js代码-手写实现 new 手写实现 call 理解执行 call 后输出的是函数执行的值,并且传进去的对象执行了相应函数,属性会发生变化。

    在JavaScript中,`new` 和 `call` 是两种非常重要的函数调用方式,它们与对象实例化和函数上下文紧密相关。在这个主题中,我们将深入理解这两个概念,并通过手写实现来加深理解。 首先,`new` 关键字用于创建一个新...

    模拟游戏找CALL,F8CALL01-04

    在IT行业中,"模拟游戏找CALL"可能是指一种模拟策略或者技术在游戏开发或调试过程中所采用的方法。CALL通常指的是函数调用,在...理解并掌握这些知识点对于游戏开发者来说至关重要,能够提升游戏的质量和玩家满意度。

    游戏找CALL和基址图文教程+源码

    在游戏内存中找CALL,通常是为了识别和理解游戏的内部逻辑,例如找到特定功能的执行入口点。这通常涉及到以下步骤: 1. 使用调试器(如OllyDbg、x64dbg等)附加到游戏进程。 2. 找到游戏执行的关键行为,比如角色...

    理解JavaScript的caller callee call apply

    ### 理解JavaScript中的`caller`, `callee`, `call`, `apply` #### Arguments对象:JavaScript函数调用的参数管理器 在JavaScript中,每个函数都有一个隐含参数`arguments`,它允许开发者访问传递给函数的所有参数...

    郁金香 CALL注入器

    在使用郁金香CALL注入器时,需要对汇编语言、操作系统原理以及进程管理有深入理解。"CALL测试工具.exe"可能是该注入器的测试版本,供用户验证注入效果和调试使用。在实际操作中,应谨慎对待这类工具,避免误操作或...

    android Action call 拨打电话 Intent.ACTION.CALL

    首先,理解Intent ACTION_CALL的含义是关键。ACTION_CALL是一个特殊的Intent动作,当设置为Intent的动作时,系统会尝试拨打指定的电话号码。然而,为了安全和隐私考虑,使用ACTION_CALL权限需要声明`...

    call in &call out

    "Call in & Call out"指的是电话家电遥控及时拨号系统中的两种操作模式,它们是现代智能家居和自动化系统中常见的通信功能。在这个系统中,HT-9170和HT9200A是两个关键设备,可能是遥控器或控制系统的核心部件。 ...

    call代码测试.rar

    1. **Call代码理解**: Call代码在编程中通常表示调用某个函数或方法,执行特定任务。在游戏开发中,Call代码可能涉及到游戏逻辑、角色行为、事件响应等多个方面。测试Call代码是为了确保这些调用的正确性,防止因...

    游戏找CALL练习实例one

    2. **游戏调试**:游戏找CALL是游戏调试的一部分,通过查找和分析游戏中的CALL,开发者或玩家可以理解游戏的运行机制,找出错误,或者进行游戏修改,如作弊码的实现。 3. **逆向工程**:逆向工程是分析软件以理解其...

    游戏CALL调试工具

    首先,我们需要理解"CALL"指令的基本概念。在汇编语言中,CALL是一个转移指令,它将程序计数器(PC)的当前值保存到堆栈中,然后将PC更新为要调用的子程序的地址,这样子程序就可以被执行。执行完成后,通过使用"RET...

    菜鸟找CALL辅助器

    在IT行业中,"菜鸟找CALL辅助器"似乎是一款专为初学者设计的工具,用于帮助理解和分析程序中的CALL指令。CALL指令在编程语言中扮演着至关重要的角色,尤其是在汇编语言或低级编程中。它用于调用子程序或函数,并在...

    call知识及应用解析

    《call知识及应用解析》 在计算机编程领域,"call"是一个至关重要的概念,它涉及到...CE教程和代码注入实践则为这一学习过程提供了实际操作的平台,帮助我们更好地理解和掌握call知识,进一步探索计算机程序的奥秘。

    图文教程[游戏汇编CALL原理]共26章

    - 这些章节讲解如何在游戏汇编代码中寻找和识别CALL指令,这对于理解和逆向工程游戏逻辑至关重要。 - 学习者将学会如何使用调试工具来追踪和分析CALL指令,以理解函数调用的流程。 3. **CALL的本质** (09授人以鱼...

Global site tag (gtag.js) - Google Analytics