js面试题:fn.call.call.call.call(fn2) 解析
有这样一道 JS面试题,问 fn.call.call.call.call(fn2)
的结果是什么?
先说下 call 函数的内部原理:
- 可以改变函数的this;
- 执行函数
下面模拟下 原生的call函数:
Function.prototype.call = function(context, ...args){context = context? Object(context) : window;// 改变 this context.fn = this;// 执行函数return context.fn(...args);
}
如下:
function fn(){console.log(11)
}function fn2(){console.log(11)
}
问:
fn.call.call.call.call(fn2) 的结果是什么?
解析:
- 前面的一串
fn.call.call.call.call
并没有调用,只是获取对象的call属性,所以,这一串的结果是 Function.call 属性。 - 所以那一串 就是
Function.call.call(fn2)
;还可以解理为 fn3.call(fn2)。 - 根据call的原理(可参考上面的call模拟),在 fn3执行call,其实际是这样执行的
fn2.fn3()
。 - 由于 fn3实际上就是 call 函数,所以, fn2.fn3() 等价于
fn2.call()
。 - 所以,上面那一串代码的最终结果,就是调用 fn2,所以结果输出 22.
转自https://blog.csdn.net/xufang461010923/article/details/108111226
js面试题:fn.call.call.call.call(fn2) 解析相关推荐
- 2017面试分享(js面试题记录)
2017面试分享(js面试题记录) 1. 最简单的一道题 '11' * 2'a8' * 3 2. 一道this的问题 var num = 10;var obj = {num:8,inner: {num ...
- (五)不只是 huohuo 的 JS 面试题
写过最多的是 JS 相关的文章,做过最完整的是 JS 的思维导图,敲过最多的依然是 JS 代码,我觉得自己的 JS 还算可以了.写到这里的时候,我已经离职一周,也参加了几次面试,大多数问题都能按自己的 ...
- javascript算法+手写js面试题
链表 function ListNode(val, next) {this.val = (val===undefined ? 0 : val)this.next = (next===undefined ...
- js面试题继承的方法及优缺点解答
这篇文章主要为大家介绍了js面试题继承的方法及优缺点解答,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪 目录 说一说js继承的方法和优缺点? 一.原型链继承 二.借用构造 ...
- 前端人必看的JS面试题汇总
面试是每一个前端人在求职过程中都需要面对的事情.在面试过程中,面试官没有办法通过实践操作去了解应聘者的技能水平,所以他们更多地会通过"八股文"的考察来判断你是否符合公司的招聘要求. ...
- JS面试题汇总(四)
往期点这里:↓ JS面试题汇总(一) JS面试题汇总(二) JS面试题汇总(三) 31. JS 单线程还是多线程,如何显示异步操作 参考答案: JS 本身是单线程的,他是依靠浏览器完成的异步操作. 解 ...
- js面试题(持续更新)
js面试题 new操作符具体干了什么 创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型 属性和方法被加入到 this 引用的对象中 新创建的对象由 this 所引用,并且最后隐 ...
- js经典试题之ES6
js经典试题之ES6 1:在ECMAScript6 中,Promise的状态 答案:pending resolved(fulfilled) rejected 解析: Promise对象只有三种状态: ...
- js经典试题之数据类型
js经典试题之数据类型 1:输出"B" + "a" + + "B" + "a"的值: 答案:BaNaNa. 分析:因为+ ...
- 记录一些js面试题以及解法
记录一些js面试题,解法,感悟. 1.将字符串"aaaabbbbcccc"转换"4a4b4c" 解法1 var str = "aaaabbbbcccc ...
最新文章
- 如何修改Exchange邮件报警信息
- Access denied (java.lang.RuntimePermission getClas
- 重温强化学习之强化学习简介
- 基于依存句法分析的关键短语抽取算法实战
- Spring Web Flow 入门demo(三)嵌套流程与业务结合 附源码
- 6、mysql中字段
- 08Mysql与python交互
- python oop求三角形面积公式_Python OOP --action()函数
- 怎么创建数据表的实体类和业务类_SSM搭建二手市场交易平台(二):数据表设计...
- hadoop yarn 获取日志_Hadoop YARN日志查看方式
- 图片夹_【第8期】EHS大咖答疑解惑吊运事故的罪魁祸首之一:钢丝绳夹!不看不知道!...
- 数据挖掘之apriori算法(python实现详细注释)
- 【Web文件上传下载】各种类型文件对应的content-type
- opencms9.0安装
- 机载激光雷达原理与应用科普(四)
- H7000 DTU 问与答
- PS选择工具/魔棒工具详
- html中button标签reset用法
- 木讷的程序员需要知道的事情 (七)
- php实例精通txt下载,PHP实例精通(1碟)
热门文章
- linux 硬件raid 坏道,Linux服务器磁盘坏道的修复过程
- 德国的“隐形冠军”是怎么造成的?
- kpi绩效考核流程图_KPI绩效考核如何运作起来(内含企业KPI实例之详解)
- 程序员如何写项目经历
- 计算机通信与网络实验西电,西安电子科技大学计算机通信与网络CH04 数字传输.pdf...
- 市场调查大赛全保姆教程(经验分享)
- 数据类型--Number类型
- 定点补码加减法运算_定点整数的加减法
- 四六级、考研英语单词记忆---知米背单词APP推荐!
- 调侃《HeadFirst设计模式》之装饰者模式