this参数:代表函数调用相关联的对象,称为函数上下文。
一、函数调用中this的指向
特性:在非严格没事下,this指向window对象;在严格模式下this为undefined;
非严格模式下:
function fn() {
return this;
}
fn(); //window
严格模式下:
function fn() {
“use strict”;
return this;
}
fn(); //undefined
二、方法调用中this的指向
特性:对象的方法被调用时,this指向该对象。
var obj = {
fn: function() {
return this;
}
}
obj.fn(); //obj
三、构造函数中this的指向
构造函数:创建并初始化一个新对象。
特性: this指向创建的新对象。
function Obj() {
this.fn = function() {
return this;
}
}
var obj1 = new Obj();
obj1.fn() // obj1
四、apply和call方法中this的指向
特性:this指向绑定的首个参数(对象)。
function fn() {
return this;
}
var obj = {a:1};
fn.call(obj); // obj
五、箭头函数中this的指向
特性:箭头函数中没有指定的this值,this在箭头函数创建时确定。
阮一峰老师的es6标准入门:
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
JavaScript忍者秘籍(第2版):
由于箭头函数是作为对象字面量的属性定义的,对象字面量在全局代码中定义,因此,箭头函数内部的this值与全局函数的this值相同
深入理解es6:
如果箭头函数被非箭头函数包含,则this绑定指向的是最近一层非箭头函数的this;否则,this的值会被设置为全局对象