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);
    }
    console.log(Foo()); // window
    Foo.getName();//  2
    getName();//   1
    Foo().getName();//   1
    getName();//    1
    new Foo.getName();//  2
    new Foo().getName();//  3
    new new Foo().getName();//  3

心得:调用构造函数时,运行会覆盖外层函数,
2.console.log("8"|"1");输出什么?
答:9 这是位运算符~,&,| 分别对应非,与,或,不过这两个数字是要进行2进制的计算,
&是比较2进制的数,是否相匹配,它把每个数字中的数位对齐,然后用下面的规则对同一位置上的两个数位,如果相同就留下2进制的位数,如果不匹配就舍去为0;
|同样也是2进制的数进行比较,相当于2进制的位数上有1上1没1就填0;