视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
在JavaScript函数中this指向的是什么
2020-11-27 19:28:41 责编:小OO
文档
 今天将和大家分享JavaScript中一个重要知识点this,有一定的参考价值,希望对大家学习有所帮助。

对于this关键字的学习经常让我们感到困惑,搞不清楚它在函数中指代的是什么以及如何去使用它,今天将在文章中为大家详细介绍有关this的知识

【推荐课程:JavaScript教程】

上下文和this关键字

在JavaScript中,函数有自己的执行上下文,在这里要特别注意下函数的执行上下文不是关于它是如何声明的,也不是说函数的作用,而是关于如何在代码中调用它,我们在调用此执行上下文时就会用到this。当this从函数内部访问时,实际上就是访问其执行上下文。

调用函数方式与this

上下文取决于函数的调用方式,我们可以通过4种不同的方式来调用上下文的函数,因此this也有四种不同的指向

1. 一个基本的函数调用

2. 使用上下文对象调用函数,也称为隐式绑定。

3. 使用call()或调用函数apply(),也称为显式绑定。

4. 通过bind()方法绑定

基本函数调用

基本函数调用是调用函数的最简单方法

例:

<script type="text/javascript">
	var name="张三";
	function student(){
	console.log(this.name);
	}
	student();
</script>

在这个例子中可以看出student()是从全局范围内调用函数,因此这里的this指代的是全局范围,所以输出结果为“”张三“”

隐式绑定

当函数被一个对象“包含”的时候,我们称函数的this被隐式绑定到这个对象里面了

<script type="text/javascript">
var student={
	name:"张三",
	obj:function(){
	console.log(this.name)
	}
}
student.obj();
	</script>

obj函数虽然被放到对象里去但是并不会因为它被定义在对象的内部就会与外部产生区别,在隐式绑定下,obj通过this还是可以访问到student对象中的a属性

显示绑定

可以使用call()或apply()方法调用函数,其执行上下文显式绑定到对象,call和apply可以改变this指向

例:未使用call ()或者apply()时

<script type="text/javascript">
var name="张三";
var obj = {
	name:"李四",
	fun:function(){
	console.log(this.name);}}
obj.fun();
</script>

利用call()使this指向window

<script type="text/javascript">
var name="张三";
var obj = {
name:"李四",
fun:function(){
 onsole.log(this.name);}}
 obj.fun.call(window);
</script>

bind()绑定

bind()会创建一个函数,函数体内的this对象的值会被绑定到传入bind()第一个参数的值,但是bind不执行函数,只返回一个可供执行的函数

<script type="text/javascript">
var a = {
	b : function(){
	var func = function(){
	console.log(this.c);
	}
	func.bind(this)();
	},
	c : 'Hello!'
}
a.b();
	</script>

通过bind方法将this指向c对象中的内容。

总结:

下载本文
显示全文
专题