JS中的this
this 是执行上下文的一个属性,而不是某个变量对象的属性,是一个与执行上下文相关的特殊对象。
全局执行上下文中的this
指向宿主对象,浏览器为window,严格模式下(strict mode),this 会绑定到undefined。
函数执行上下文中的this
1、通过call、bind、apply绑定的this
指向绑定的对象,如果是null或者undefined指向全局中的this。
2、通过对象方法调用的this
1)使用对象来调用其内部的一个方法,该方法执行上下文中的 this 是指向对象本身的。
2)在全局环境中调用一个函数,函数内部的 this 指向的是全局变量 window。
3、通过构造函数中设置,new创建
this指向新对象本身
var tempObj = {}
CreateObj.call(tempObj)
return tempObj
4、箭头函数中的this
1、ES6的箭头函数不会创建自身的执行上下文,箭头函数中的this取决于它的外部函数。它的取值遵循普通普通变量一样的规则,沿着作用域链一层一层往上找。
var obj = {
len: 10,
myFun: function () {
var innerFun = () => {
console.log(this);
};
innerFun();
}
};
obj.myFun();
2、箭头函数不能用call方法来修改this。
eval执行上下文中的this
......
this的设计缺陷以及应对方案
1、 嵌套函数中的 this 不会从外层函数中继承,指向widow
var myObj = {
name: 'myName',
showThis: function() {
console.log(this) // myObj
function inner () {
console.log(this)
}
inner() // window
}
}
myObj.showThis()
2、 普通函数中的 this 默认指向全局对象 window
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!