zoukankan      html  css  js  c++  java
  • 阿里经典面试题

    阿里的一道经典的考察原型、函数声明提前、运算符优先级等知识点的题目,分享给童鞋们,可以先不看答案,题尾附答案及解析。
    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
    getName();  //=>[全局] 4
    Foo().getName();  //=>[先把FOO作为普通函数执行,在处理GET-NAME] 返回的是WIN,WIN.GET-NAME() =>1
    getName();  //=>[全局] 1
    new Foo.getName();  //=>成员访问的优先级高于无参数列表NEW =>Foo.getName ([F->2]) =>new [F->2]() 用构造函数的方式把找到的函数执行,创建这个函数类的一个实例(构造函数执行也是先像普通函数执行一样执行) =>2
     
    new Foo().getName();//=>成员访问和有参数列表NEW优先级都是19,按照从左到右依次执行即可 =>new Foo() =>创造Foo的一个实例(f) =>f.getName() =>3
     
    new new Foo().getName();//=>先算new Foo(),创造一个实例(f) =>new f.getName() =>继续执行优先级高的成员访问 =>f.getName =>[F->3] =>new [F->3]() =>构造函数执行这个方法 =>3
    /*
    * Foo.getName 点是成员访问符
    * new Foo; 无参数列表NEW
    * new Foo(); 有参数列表NEW
    */
    再附一张运算符优先级图片,共勉。
     
  • 相关阅读:
    Maven配置--《maven实战》读书笔记
    设置定时任务
    C#中的==
    C# lock的应用
    JDK和JRE
    末尾不以.OK文件结尾的正则表达式匹配
    ftp访问空目录的返回
    正则表达式的结尾匹配
    匿名对象和匿名类
    匿名内部类的调用
  • 原文地址:https://www.cnblogs.com/jiajialove/p/11207682.html
Copyright © 2011-2022 走看看