首页 > 其他分享 >前端面试题(三)

前端面试题(三)

时间:2023-02-01 14:11:15浏览次数:40  
标签:function 面试题 console 前端 getName new Foo 代码

1.代码解析

<script>
    //定义全局函数对象 (编译阶段)
    function Foo(){
        //重写全局 getName (运行阶段)
        getName = function(){ console.log(1)}
        return this;
    }
    //为Foo挂载私有属性 (运行阶段)
    Foo.getName = function () { console.log(2)}
     //为Foo挂载原型链有属性 (运行阶段)
    Foo.prototype.getName = function(){ console.log(3)}

    //重新定义 getName  (运行阶段)
    var getName = function(){ console.log(4)}

    //定义全局函数 getName (编译阶段)
    function getName(){
        console.log(5)
    }


    //运行区域
    Foo.getName() //2 直接执行32行代码
    getName() //4 getName在运行阶段,即37行代码中被重新定义,所以输出4
    Foo().getName() //1 Foo()返回window,即window.getName(),因为getName被28行代码改写,所以输出1
    getName() //1 同上
    new Foo.getName() //2 先把Foo.getName看作一个整体,Foo.getName刚好是一个函数,new语句会将其这个函数执行一遍(32行代码)
    new Foo().getName() //3 先执行new Foo(),copy一个新的Foo副本并返回,再执行Foo副本的getName()方法,这个方法是原型链上(34行代码)

    //先执行new Foo(),copy一个新的Foo副本并返回,写作Foo_2
    //接着把Foo_2.getName看作一个整体,Foo_2.getName刚好是一个函数,指向34行代码
    //接着再执行new Foo_2.getName(),把34行代码的函数作为模版进行一次构建,构建过程中顺带执行一遍34行代码
    //34行代码输出3
    new new Foo().getName() 

</script>

标签:function,面试题,console,前端,getName,new,Foo,代码
From: https://www.cnblogs.com/OrochiZ-/p/17082372.html

相关文章

  • 面试题-Redis的主从同步是如何实现的
    Redis的主从同步是如何实现的Redis的主从复制可以根据是否是全量,分为全量同步和增量同步(也叫全量复制和部分复制)。全量复制一般用于初次复制的场景部分复制则用于处理......
  • 千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby
    我曾经多次向人推荐Vim,其热情程度有些类似现在卖保险的,有的时候,人们会因为一些弥足珍贵的美好暗暗渴望一个巨大的负面,比如因为想重温手动挡的快乐而渴望买下一辆二十万公里......
  • C#.NET 前端大文件上传
    ​ IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag     ......
  • 前端必须掌握的JS面向对象
    面向对象和面向过程区别面向对象是把构成问题的事物拆解为各个对象,来描述这个事物在当前问题中的行为,而不是为了实现某个步骤。面向过程,是分析出实现问题的每个步骤,然后编......
  • 面试题-如何实现Redis的高可用
    如何实现Redis的高可用实现Redis的高可用,主要有哨兵和集群两种方式。哨兵简单的一句话:反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为......
  • ASP.NET 前端大文件上传
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传......
  • SpringBoot 前端大文件上传
    ​ 最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的......
  • 半个前端新手入门Electron的过程
    前言先说几句废话,本人是一名web后端开发,主语言是java,在学Electron之前,只会一点点HTML和JavaScript。本文讲的也是我学习Electron的过程,而非教程,请酌情参考。Ele......
  • 前端主题切换方案详解 转载
    前端主题切换方案 现在我们经常可以看到一些网站会有类似暗黑模式/白天模式的主题切换功能,效果也是十分炫酷,在平时的开发场景中也有越来越多这样的需求,这里大致罗列一些......
  • 面试题积累_01
    1如何判断一个数是否为奇数?//常规方法boolisOdd_Method1(intn){ if(n%2) returntrue; else returnfalse; }//高效方法boolisOdd_Method2(intn){......