面试时遇到了2次该题,结果两次都没有看懂,感觉自己的js功底太差了,跟没学过一样。这道题很经典,网上查了一下,记录一下大佬的思路和自己的理解

题目:

function Foo(){getName = function(){console.log(1);};return this;
} Foo.getName = function(){console.log(2);
}Foo.prototype.getName = function(){console.log(3);
}var getName = function(){console.log(4);
}function getName(){console.log(5);
}//输出下列结果Foo.getName();getName();Foo().getName();getName();new Foo.getName();new Foo().getName();new new Foo().getName();

Foo.getName()   =>   2

Foo.getName()就是单纯的表示 输出函数 Foo的静态方法,所以直接输出2

getName()  =>  4

getName()因为提前声明的原因, 声明后被  var getNmae() = xxx 所覆盖  所以这里的输出 变成 4

Foo().getName()  => 1

Foo()里的return this 是window,而window。getName 在Foo里被覆盖,所以输出为 1

getName()  => 1

而这里getName() 在 Foo().getName() 之后,原window里的getName被覆盖,所以输出同上 为 1

new Foo.getName()

new Foo().getName()

new new Foo().getName()

前端面试经典js题目Foo 与 getName相关推荐

  1. 2020年前端面试之JS手写代码题合集

    2020年前端面试之JS手写代码题合集 预计会有上千道题,后续慢慢补! 1.  写一个把字符串大小写切换的方法 function caseConvert(str){return str.replace ...

  2. 80道前端面试经典选择题

    前言 看了一下各种面试题,选择题是必有的 所以我整理了一些经典的前端面试选择题,希望能对大家日后找工作有所帮助! HTML/CSS 1.在 css 选择器当中,优先级排序正确的是() A.id选择器& ...

  3. 2023前端面试(JS专题)

    目录 一.前言 二.问题 1,JS数据类型 2,== 与 === 的区别? 3,JS的宏任务和微任务? 4,实现Jsonp 5,JS作用域 6,JS作用域+this指向+原型笔试题(高频) 7, JS ...

  4. 前端面试:经典面试题Foo与getName()

    从一道面试题出发 按照惯例,还是从面试题出发.用一道面试题引出相关的知识(日常面向面试学习

  5. 前端面试经典题目合集--77题

    (整理自网络,侵删) 1.请你谈谈Cookie的弊端 cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的. 第一:每个特定的域名下最多生成20个cookie ...

  6. 前端面试经典题目合集(HTML+CSS)

    (整理自网络,侵删) 1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层 分别是:HTML.CSS.JavaScript 作用:HTML实现页面结构,CSS完成页面的表 ...

  7. 拯救你的面试:前端面试大全--js面试题(超长文章)

    一.什么是编译型语言?什么是解释型语言?JS 是什么类型的语言? 1.编译型语言 1. 解释 程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的 ...

  8. 【前端面试之JS】js如何实现继承

    继承(inheritance)是面向对象软件技术当中的一个概念. 如果一个类别B"继承自"另一个类别A,就把这个B称为"A的子类",而把A称为"B的父 ...

  9. 前端面试系列-JS 异步编程

    并发与并行的区别? 并发是宏观概念,我分别有任务 A 和任务 B,在一段时间内通过任务间的切换完成了这两个任务,这种情况就可以称之为并发. 并行是微观概念,假设 CPU 中存在两个核心,那么我就可以同 ...

最新文章

  1. 百度Apollo发布海量自动驾驶数据集,还有两项重磅挑战赛
  2. ngrok 内网穿透
  3. oracle集群图例
  4. 实战_05_SpringBoot整合redis单机版本
  5. 服务器运行容器工具大盘点!
  6. 【论文写作】本科、硕士研究生毕业论文格式问题
  7. UE4删除C++Classes下的类
  8. Android 开源项目及库汇总
  9. 手撕包菜磁力搜索引擎的开源说明
  10. 沟通的艺术I:什么是沟通
  11. 太空大战2d游戏制作
  12. 笔记本无线上网方式大全 (转)
  13. 【idea】智能花盆
  14. DS二叉树——Huffman编码与解码(不含代码框架)
  15. 输入一个整数,判断它是几位数
  16. 如何建立自动语音问卷外呼系统
  17. Play Framework 2.5.x 测试环境搭建
  18. C#进行MapX二次开发之MapX基础知识
  19. VC2012下MFC程序各控件的常用方法
  20. 2022新一代设备维修管理系统助力企业降本增效

热门文章

  1. 【转载】开源项目推荐:Qt有关的GitHub/Gitee开源项目(★精品收藏★)
  2. 如何做一名优秀的下属
  3. 一键重装系统工具和U盘重装工具有什么区别?
  4. zotero+坚果云安装记录
  5. 如何取消坚果云的分享链接
  6. 【kaggle】Airbnb新用户的民宿预定结果预测
  7. react+amcharts5柱状图demo
  8. Java语言高级(第三部分)异常多线程 ->(个人学习记录笔记)
  9. 2021-12-19 《聪明的投资者》学习笔记-15.积极型投资者的股票选择--7个标准。低市盈率,价格低于净流动资产
  10. C语言——兔子繁殖问题多解