简单刨析JS中Call()的执行原理

简单刨析JS中Call()的执行原理

最近发现许多同学反映对于call这个函数的理解总是一头雾水,其实如果简单梳理call的执行思路,就会发现,其实并不是那么晦涩难懂,在这篇文章中,会用最能让人理解的"人话",帮助大家理解这个函数,但是注意,这并不等于我在刨析call的源码
首先我们要明白,call的作用是什么,其实很简单,就是把调用call方法的对象所传递的形参变成方法的this,熟读一下三句话就能明白了:
// 把当前调用的对象以类似属性名的方式放在参数中
// 谁调用,this就是谁,所以参数反客为主成为this,并且执行调用者
// 执行后把调用者删除
// delete obj.fn;
如下图所示:
在这里插入图片描述
!!谨记,如果出现两个及以上的call,最后就会让传进去的实参执行
类似这种:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JS 脚本的执行原理可以概括为以下几个步骤: 1. 解:浏览器首先会对 JS 脚本进行解,将其转换为可执行的代码。解过程包括词法分和语法分,将代码分解为词法单元并构建语法树。 2. 创建全局上下文:在执行之前,浏览器会创建一个全局执行上下文(Global Execution Context),用来存储全局变量、函数声明等信息。 3. 执行代码:按照从上到下的顺序执行代码。遇到函数调用时,会创建一个新的函数执行上下文,并将其加入调用栈(Call Stack)。 4. 变量与函数声明提升:在代码执行前,会进行变量与函数声明的提升。变量声明会被提升到作用域的顶部,但是初始化的赋值操作不会提升。函数声明会被整体提升到作用域的顶部,可以在声明之前进行调用。 5. 作用域与作用域链:JavaScript采用词法作用域,函数和变量的访问权限由它们在代码的位置决定。每个函数都会创建一个新的作用域,作用域之间通过作用域链进行连接。 6. 变量赋值与运算:在执行过程,会进行变量的赋值操作和各种运算操作。JavaScript的运算符包括数学运算符、逻辑运算符、赋值运算符等。 7. 垃圾回收:当 JS 引擎确定某个对象不再被引用时,会自动触发垃圾回收机制,将其占用的内存释放回来。 通过以上步骤,JS 脚本的代码会被逐行执行,从而实现相应的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值