深色模式
JavaScript 中的 this 关键字
this
的指向
总结
谁用我,我就指向谁。
简单说,this
就是属性或方法“当前”所在的对象。
在某些情况下,这个对象可能是顶层对象,这个是容易给人造成困惑的地方。
全局环境
this
指向全局对象。
构造函数
this
指向新生成的对象。
对象的方法
this
指向方法所属的对象。
使用 this
的误区
嵌套的内层函数中,this
指向全局对象。
回调函数中的 this
,指向全局对象。数组处理方法的参数,就是一个回调函数。
绑定 this
Function.prototype.call()
call()
的作用是:
- 绑定调用
call()
的函数中的this
; - 执行这个函数;
- 以可变参数的形式传入参数。
js
var obj = {};
var f = function () {
return this;
};
f() === window // true
f.call(obj) === obj // true
Function.prototype.apply()
apply()
的作用是:
- 绑定调用
apply()
的函数中的this
; - 执行这个函数;
- 以数组的形式传入参数。
和call()
的区别在于传递后面参数的方式。
Function.prototype.bind()
bind()
的作用是:
- 绑定调用
bind()
的函数中的this
; - 返回一个新的函数;
- 以可变参数的形式传入参数。
js
var counter = {
count: 0,
inc: function () {
this.count++;
}
};
var obj = {
count: 100
};
var func = counter.inc.bind(obj);
func();
obj.count // 101