javascript中this的绑定
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中this的绑定相关的知识,希望对你有一定的参考价值。
javascript中this有很多种绑定方式,最近学习过程中总结了一下,有默认绑定、隐式绑定、显示绑定、强制绑定、实例绑定。
接下来我们看看:
默认绑定:
代码如下:
function foo() {
console.log( this.a );
}
var a = 3;
foo(); // 3
全局作用域下this默认指定到window,默认绑定即调用位置如何决定 this 的绑定对象。
隐式绑定:
function foo() {
console.log( this.a );
}
var obj = { a: 3, foo: foo };
obj.foo(); // 3
隐式绑定容易丢失 比如
var bar=obj.foo;
bar();//undefined
调用位置是在window下 但是foo方法指定了obj作为它的绑定对象
显示绑定:
function foo() {
console.log( this.a );
}
var obj = { a:3 };
foo.call( obj ); // 3
使用call我们调用foo的时候强制把this绑定在obj上
强制绑定:
function foo() {
console.log( this.a );
}
var obj = { a:3};
var bar = function() {
foo.call( obj );//强制绑定
};
bar(); // 3
setTimeout( bar, 100 ); // 3
// 强制绑定的 bar 不可能再修改它的 this
bar.call( window ); // 还是3
实例绑定:
JavaScript 也有一个 new 操作符
function foo(a) {
this.a = a;
}
var bar = new foo(3);
console.log( bar.a ); // 3
以上是关于javascript中this的绑定的主要内容,如果未能解决你的问题,请参考以下文章