View on GitHub

learning

学习笔记

this

全局的this

指向 全局(window)

this === window;  //true

一般函数的this

指向 全局(window)

function f1() {
	return this;
}
f1() === window;  //true

注意: 严格模式下不能指向window!

作为对象方法的函数的this

指向调用该方法的对象

var o = {
	age: 18,
	f: function() {
		return this.age;
	}
};
console.log(o.f());  //18

注意: 将一个函数传给函数也可。(只要是以方法调用)

对象原型链上的this

也指向该对象

get/set方法与this

也指向该get/set方法所在的对象

构造器中的this

调用new后: 创建一个新对象、this指向该新对象、赋值、返回(return)新对象

call/apply和bind方法与this

指向第一个参数

总结:

  1. this总是指向函数的直接调用者(而非间接调用者);
  2. 如果有new关键字,this指向new出来的那个对象;
  3. 在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window;