暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

函数调用模式

猪蹄和它的小鱼干 2020-05-18
144

在javaScript中有四种调用模式:方法调用模式函数调用模式构造器调用模式apply调用模式


我们先看以下代码:

console.log("=================")
functionoutFunction1(){
console.log("outFunction1this:",this);
}
outFunction1();
console.log("=================")
functionoutFunction2(){
console.log("outFunction2this:",this);
functioninnerFunction(){
console.log("innerFunctionthis:",this);
}
innerFunction();
}
outFunction2();
console.log("=================")
varoutObject={
name:"outObject",
outFunction3:outFunction2
}
outObject.outFunction3();


结果:


从以上代码中我们发现,outFunction1函数内部this被绑定到全局对象上。outFunction3 是outObject对象的属性,outFunction2函数内部的this被绑定到outObject上。


我们知道函数作用域,一个函数相当于一个块级作用域。然而从以上代码中我们发现,innerFunction函数中的this被绑定到全局对象上。


《javaScript语言精粹》这本书上说这是一个设计的错误。但我们可以通过以下方法解决这个问题。



文章转载自猪蹄和它的小鱼干,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论