Vue注意点——this

梦想不抛弃苦心追求的人,只要不停止追求,你们会沐浴在梦想的光辉之中。再美好的梦想与目标,再完美的计划和方案,如果不能尽快在行动中落实,最终只能是纸上谈兵,空想一番。只要瞄准了大方向,坚持不懈地做下去,才能够扫除挡在梦想前面的障碍,实现美好的人生蓝图。Vue注意点——this,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

面向对象语言中 this 表示当前对象的一个引用。

但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。

  • 在方法中,this 表示该方法所属的对象。
  • 如果单独使用,this 表示全局对象。
  • 在函数中,this 表示全局对象。
  • 在函数中,在严格模式下,this 是未定义的(undefined)。
  • 在事件中,this 表示接收事件的元素。
  • 类似 call() 和 apply() 方法可以将 this 引用到任何对象。

那么就大致的看看这些this在常用的几个使用环境中代码中的表现吧

在方法中,this 表示该方法所属的对象:

代码实现:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>对于this的测试</title>
		<script src="vue.js"></script>
	</head>
	<body>
		<div id="app">
			<button type="button" @click="printThis">打印方法中的this</button>
		</div>
		
		<script>
			new Vue({
				el:'#app',
				methods:{
					printThis(){
						console.log(this)
					}
				}
			})
		</script>
	</body>
</html>

打印结果:

Vue注意点——this

可以看到,在点击按钮打印出的this对象是Vue,也确实是方法所属的对象

如果单独使用:this 表示全局对象。

代码实现:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>对于this的测试</title>
		<script src="vue.js"></script>
	</head>
	<body>
		<div id="app">
			
		</div>
		
		<script>
			var a = this
			console.log(a)
		</script>
	</body>
</html>

打印结果:

Vue注意点——this

可以看到,在直接使用的时候,this指向的对象就是windows,也就是全局对象

在函数中:this 表示全局对象。

代码实现:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>对于this的测试</title>
		<script src="vue.js"></script>
	</head>
	<body>
		<div id="app">
			
		</div>
		
		<script>
			document.getElementById("app").innerHTML = priontThis();
			function priontThis(){
				return this
			}
		</script>
	</body>
</html>

打印结果:

Vue注意点——this

 可以看到,在我们使用函数返回一个this对象的时候,将返回值打印在页面中显示的是Window,也就是全局对象

在事件中:

代码实现:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>对于this的测试</title>
		<script src="vue.js"></script>
	</head>
	<body>
		<div id="app">
			<button type="button" onclick="this.style.display='none'">点我消失</button>
			<!-- <button type="button" v-on:click="this.style.display='none'">点我消失</button> -->
		</div>
		
		<script>
			new Vue({
				el:'#app',
				methods:{
					print(){
						console.log(this)
					}
				}
			})
		</script>
	</body>
</html>

打印结果:

按钮在点击之后就消失了,这是绑定了原生的js事件是oncilck,并不是Vue中的事件,如果你使用v-on:cilck的方式绑定了一个央视,会报错

当方法作为参数传递到自定义指令的时候:

代码实现:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>对于this的测试</title>
		<script src="vue.js"></script>
	</head>
	<body>
		<div id="app">
			<p v-color>你好世界</p>
		</div>
		
		<script>
			new Vue({
				el:'#app',
				directives:{
					color:{
						bind(){
							console.log(this)
						}
					}
				}
			})
		</script>
	</body>
</html>

打印结果:

Vue注意点——this

 可以看到,在自定义指令中,this表示的是全局对象,并不是绑定的DOM对象,所以此时就需要一个参数el作为接收操作DOM对象的变量来调用方法

注意点:

当我们需要调用this,但是又不知道此时的this到底代表着什么,最简单的办法就是把this打印在控制台输出一下看其中包含的内容就知道具体代表的是什么了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153352.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!