对于 Function.call()的深入理解

Function 作为 JavaScript 的内置对象,拥有以下两个方法:

  • Function.call();
  • Function.apply();

这两个方法所实现的功能都是相同的:将函数作为对想象的方法调用。(引用自《JavaScript 权威指南》P.768 Function.call())。这两者的不同之处在于参数的类型不一样。

具体二者不同之处不是本文的重点,读者若想了解可以自行搜索。


言归正传,本文将通过实现类似 Function.call()的功能函数来深入解释其函数内部的运行机制!

Function.call()的需求分析

在研究该函数内部的运行机制之前,我们先来了解以下该函数具体是要实现什么样的功能?

根据《JavaScript 权威指南》P.768 有关 Function.call(thisobj, args...)的描述,其详细解释如下:

call()将指定的函数 function 作为对象 thisobj 的方法来调用,并传入参数列表中 thisobj 之后的参数。返回的是调用 function 的返回值。在函数体内,关键字 this 指代 thisobj 对象,如果 thisobj 位 null,则使用全局对象。

也就是说 call()函数将会用 thisobj 来调用指定的函数 function,并返回结果。

Function.prototype.myCall()方法设计

在有了上述描述之后,我们就可以着手设计方法了!我们先写一下伪代码:

Function.prototype.myCall = function(obj) {
    let object = 如果有传入对象obj传入则保留obj,否则为全局对象
    在object上添加一个临
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值