js中的经典题Foo.getName
Foo.getName所涉及到的知识点
先看看题目代码:
function Foo() { getName = function () { alert(1); } return this; } Foo.getName = function () { alert(2); } Foo.prototype.getName = function () { alert(3); } var getName = function () { alert(4); } function getName() { alert(5); } Foo.getName(); //2 getName(); //4 Foo().getName(); //1 getName(); //1 new Foo.getName(); //2 new Foo().getName() //3 new new Foo().getName() //3
所涉及到知识点很多,this全局指向,变量表达式与变量声明提升优先、原型链,new运算符优先级等。。
1、先看懂代码:
//创建了foo()方法,里面有全局变量并赋值为一个方法,
//return this,目前this指向全局
function Foo()