61-62----JS基础-----this与this补充(描述this的存在与作用)

一 代码

下面两节的代码其实想表达的意思是一样的,主要是想表达:以方法的形式调用时,this就是调用方法的那个对象。

简单看一下即可。

1 this

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
		
			/*
			 * 1. 解析器在调用函数每次都会向函数内部传递进一个隐含的参数,
			 * 	这个隐含的参数就是this,this指向的是一个对象,
			 * 	这个对象我们称为函数执行的 上下文对象,
			 * 	根据函数的调用方式的不同,this会指向不同的对象
			 * 		1.以函数的形式调用时,this永远都是window
			 * 		2.以方法的形式调用时,this就是调用方法的那个对象
			 */
			
			function fun(){
      
      
				//console.log("a = "+a+", b = "+b);
				console.log(this.name);
			}
			
			//fun();
			
			//创建一个对象
			var obj = {
      
      
				name:"孙悟空",
				sayName:fun
			};
			var obj2 = {
      
      
				name:"沙和尚",
				sayName:fun
			};
			
			//console.log(obj.sayName == fun);
			var name = "全局的name属性";

			// 测试1:以函数形式调用,this是window
			fun();              // 输出:"全局的name属性"
			
			// 测试2:以方法的形式调用,this是调用方法的那个对象
			obj.sayName();      // 输出:"孙悟空"
			obj2.sayName();     // 输出:"沙和尚"
			
		</script>
	</head>
	<body>
	</body>
</html>

2 this补充

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			//创建一个name变量
			var name = "全局";
			
			//创建一个fun()函数
			function fun(){
      
      
				console.log(this.name);
			}
			
			//创建两个对象
			var obj = {
      
      
					name:"孙悟空",
					sayName:fun
			};
			var obj2 = {
      
      
					name:"沙和尚",
					sayName:fun
			};
			
			//我们希望调用obj.sayName()时可以输出obj的名字
            obj.sayName();      // 输出:"孙悟空"
			obj2.sayName();      // 输出:"沙和尚"
			
		</script>
	</head>
	<body>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_44517656/article/details/121331505