浅析this指向
- 前言
- 一、this的指向使用?
- 二、this的概念
- 1.在js中,this的意思为“这个;当前”,是一个指针型变量,它动态指向当前函数的运行环境。
- 2.在不同的场景中调用同一个函数,this的指向也可能会发生变化,但是它永远指向其所在函数的真实调用者;如果没有调用者,就指向全局对象window
普通函数:关于this,谁调用就指向谁,没有调用者,就指向全局对象window。
箭头函数:箭头函数的this指向于函数作用域所用的对象。
this的使用
一、全局环境下this的使用
在全局作用域下this始终指向全局对象window,无论是否是严格模式!
二、函数下的this指向
1.普通函数下this分两种,严格模式和非严格模式
严格模式下:
function point(){
'use strict'
console.log(this);
}
point(); //undifined
window.point(); //window
直接调用指向undefined, window,point()调用指向window
非严格模式下:
非严格模式下,通过test()和window.test()
调用函数对象,this都指向window
2.箭头函数中的this
箭头函数:this指向于函数作用域所用的对象。
代码如下(示例):
var pointobj = {
a:'小甜甜',
functions: () => {
console.log ("对象:",this) //window {postMessage:,...}
}
声明的是全局变量Obj,this指向箭头函数所在全局作用域的对象,即indow对象。
案例
1.由于show函数是箭头函数,所以自身不能绑定this,因此找它的上一级作用域。如果父级作用域还是箭头函数,就再往上找,一层一层的直到直到this的指向。
2.window.show()返回值是window,所以this此时指向window;
3.window.obj.show(),obj是对象,非箭头函数,所以找到这里就停止了,this绑定到obj上。window调用obj,所以obj中的this也指向window。