JS:笔试题(new)
function fn() { rank = function () { alert("艾伦") } console.log(this); return this } fn.rank = function () { alert("黛西") } fn.prototype.rank = function () { alert("亚当") } var rank = function () { alert("玛丽") } function rank() { alert('莉丽丝') } fn.rank() rank() fn().rank() rank() new fn.rank() new fn().rank() new new fn().rank()
打印结果:window{} 弹窗-(黛西)(玛丽)(艾伦)(艾伦)(黛西)fn{}(亚当)fn{}(亚当)
解析:首先变量提升;按序进行预编译;注意:“1”中fn调用后的rank覆盖了全局中的rank
1、var rank = function () {alert("玛丽")}
2、function fn() {
rank = function () {alert("艾伦")}
console.log(this);
return this
}
3、function rank() {alert('莉丽丝')}
4、 fn.rank = function () {alert("黛西")}
5、fn.prototype.rank = function () {alert("亚当")}
fn.rank()//黛西 window
rank()//玛丽
fn().rank() //fn{} window 艾伦
rank()//艾伦
new fn.rank()//黛西
(new fn()).rank()//fn() 亚当
new ((new fn()).rank)()// fn()亚当