js中this的指向
2021-05-01 11:28
标签:size time rip 复杂 cti use spl 绑定 箭头 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变 严格模式(‘use strict‘) 1.非严格模式下,全局作用域下的this指向window 非严格模式讨论 1.在对象方调用方式中, this指向调用它所在方法的对象 2.在嵌套对象调用方式中,this指向最终调用对象 3.构造函数中this指向由return返回值确定(普通返回值指向对象实例本身,复杂对象返回值指向新对象) 4.在HTML事件句柄中,this指向了接收事件的HTML元素 5.apply、call、bind绑定时,this指向第一个参数 6.箭头函数的this指向为定义箭头函数的this(等同于上一级this) 7.定时器(setTimeout、setInterval)调用 在定时器中,this指向window js中this的指向 标签:size time rip 复杂 cti use spl 绑定 箭头 原文地址:https://www.cnblogs.com/zhaozhou/p/12146243.html
2.严格模式下,全局作用域下的this指向undefined ‘use strict‘
function X() {
console.log(this);
}
X(); // 严格模式输出undefined,非严格模式输出Window
var X = {
A: ‘XA‘,
B: function() {
console.log(this.A);
}
};
X.B();//输出XA
var A = ‘A‘;
var X = {
A: ‘XA‘,
B: function() {
console.log(this.A);
}
};
var B = X.B;
B();//输出‘A‘
function X() {
this.A = ‘XA‘;
return ‘‘;//当前情况结果输出XA
//return {A:‘RA‘};//当前情况结果输出RA
}
var Y = new X();
console.log(Y.A)
var A = {a:‘Aa‘};
var B = {a:‘Ba‘};
function X() {
console.log(this.a);
}
X.call(A,B); // 输出Aa
var A = ‘A‘;
var X = {
A: ‘XA‘,
//Y: () => {console.log(this.A)}//该情况输出A
Y: function() {console.log(this.A)}//该情况输出XA
}
X.Y();
var A = ‘A‘;
var X = {
A: ‘XA‘,
Y: setTimeout(function() {console.log(this.A)}, 1000)
}
X.Y; //输出A