1. function Foo() {
    2. getName = function () { alert (1); };
    3. return this;
    4. }
    5. Foo.getName = function () { alert (2);};
    6. Foo.prototype.getName = function () { alert (3);};
    7. var getName = function () { alert (4);};
    8. function getName() { alert (5);}

    请写出以下输出结果:

    1. Foo.getName();
    2. getName();
    3. Foo().getName();
    4. getName();
    5. new Foo.getName();
    6. new Foo().getName();
    7. new new Foo().getName();

    第一问 考察静态属性
    第二问 考察变量提升
    第三问 一个是变量作用域问题,一个是this指向问题
    第四问 考察全局变量
    第五六七问 考察的是js的运算符优先级问题
    image.png
    **
    答案为:

    1. Foo.getName();//2
    2. getName();//4
    3. Foo().getName();//1
    4. getName();//1
    5. new Foo.getName();//2
    6. // . > new
    7. // 实际运算顺序为 new (Foo.getName)()
    8. new Foo().getName();//3
    9. // () > .
    10. // 实际运算顺序为 (new Foo()).getName()
    11. new new Foo().getName();//3
    12. // () > . > new
    13. // 实际运算顺序为 new ((new Foo()).getName)()