• 阿里经典面试题


    阿里的一道经典的考察原型、函数声明提前、运算符优先级等知识点的题目,分享给童鞋们,可以先不看答案,题尾附答案及解析。
    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
    */
    再附一张运算符优先级图片,共勉。
     
  • 相关阅读:
    hdu 4144 状态压缩dp
    hdu 4118 树形dp
    hdu 4115 2-SAT判定
    hdu 4085 斯坦纳树
    hdu 3311 斯坦纳树
    hdu 4081 最小生成树+树形dp
    hdu 4424 并查集
    洛谷P2661信息传递
    洛谷P2746校园网
    树状数组模板
  • 原文地址:https://www.cnblogs.com/jiajialove/p/11207682.html
Copyright © 2020-2023  润新知