131.面试题分析

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() 
			

首先预编译由优先级顺序先找实参,但是不是在函数的环境中首先排除

然后再找var提升声明

var 项羽

再找函数体,进行函数提升

function fn(){“盖伦”}

function fn(){“琴女”}

最后运行代码
            fn.rank = function() {alert("赵信")}
            fn.prototype.rank = function() {alert("典韦")}
            var rank = function() {alert("项羽")}            

fn.rank()就近寻找  打出"赵信"

rank()就近寻找  打出"项羽"

fn().rank()

运行fn()返回window  ,并且赋给window.rank(盖伦)

window.rank()  打出"盖伦"

rank()  ==>window.rank()  打出"盖伦"

new fn.rank()  

已知符号优先级是:() > 成员访问|new 带参  > new 无参|函数调用

new (fn.rank) ()

fn.rank() ==>赵信

打出"盖伦"

 (new fn()).rank()

打出"典韦"

new ((new fn()).rank)()

打出"典韦"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值