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()亚当
 
 
posted on 2022-07-12 19:28  香香鲲  阅读(161)  评论(0编辑  收藏  举报