Javascript this 关键字 详解

前端之家收集整理的这篇文章主要介绍了Javascript this 关键字 详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、this指向构造函数实例化对象@H_403_1@

在上篇文章中,我们提到了使用new和不使用new调用构造函数的区别,如下例:@H_403_1@

代码如下:
@H_403_1@

当构造函数当做普通函数调用时,并没有返回值,同时this指向全局对象。那么我们如何来避免因为缺少new关键字,而产生的问题呢?@H_403_1@

代码如下:
@H_403_1@

在上例中,我们首先检查this是否是Benjammin的实例,如果不是,使用new自动调用构造函数,并实例化,这意味着,我们不再需要担心,遗漏new关键字实例化构造函数。当然这样我们可能会养成一个坏的习惯,如果避免这种现象呢?我们可以抛出一个错误,像下面这样:@H_403_1@

代码如下:
@H_403_1@

二、this指向调用函数的对象@H_403_1@

看下面的例子:@H_403_1@

代码如下:
@H_403_1@

三、this指向全局对象@H_403_1@

在上面讨论构造函数的时候我们也讨论到不适用new的时候,this会指向全局对象,下面我们来看看两种常见的容易犯错的实例:@H_403_1@

代码如下:
return this.x;
}
};
//Outputs: 10
console.log(obj.output());

@H_403_1@

在使用闭包的时候,作用域发生变化,this指向window(浏览器中)。@H_403_1@

代码如下:
@H_403_1@

此时this始终指向函数调用时的对象。@H_403_1@

四、this指向apply/call()方法指派的对象 @H_403_1@

代码如下:
@H_403_1@

五、callback函数內的this指向调用该callback的函数的this所指向的对象@H_403_1@

代码如下:
4045"> //@H_403_1@

六、Function.prototype.bind中的this@H_403_1@

The bind() method creates a new function that,when called,has its this keyword set to the provided value,with a given sequence of arguments preceding any provided when the new function is called. 实例一:@H_403_1@

代码如下:

猜你在找的JavaScript相关文章