js.this

版权声明:欢迎阅读,有误请指正,转载请申明。 https://blog.csdn.net/wx1995sss/article/details/87256897
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
	/*this对象
		 1.没有明确附属对象的函数中指向全局(window对象)
		 2.函数对象方法中指向函数附属的对象
		 3.构造函数中,指向的是构造函数的实例
		 */
		//this在一般的函数指向全局
		function test(){
			this.x = 1;
			console.log(this.x);//1
			console.log(this);//window
		}
		test();
		function a(){
			var user = "abc";
			console.log(this.user);//undefined,this指向全局,useri是局部变量
			console.log(this);//window
		}
		a();
		//this在构造函数中(this指向的是构造函数的实例)
		var x = 2;
		function Fun(){
			this.x = 1;//this指向o,也就是构造函数的实例
		}
		var o =new Fun();
		console.log(o.x);//1
		//this在对象方法中(指向函数所附属的对象)
		function myFun(){
			console.log(this.x);//1
		}
		var obj = {};
		obj.x = 1;
		obj.m = myFun;
		obj.m();
		//改变this指向,call(),apply(),bind()
//		call()定义:调用一个对象的一个方法,以另一个对象指向替换当前对象指向。
//		apply()定义:应用某一对象的一个方法,用另一个对象指向替换当前对象指向。
		var a=b=3;
		var num = {a:10,b:3};
		var objd ={a:20,b:10};
		var str ={a:30,b:20};
		function sum(c,d){
			return this.a+this.b+c+d
		}
		console.log(sum(3,4));//13
		console.log(sum.call(num,3,4));//20
		console.log(sum.apply(objd,[3,4]));
		var fun = sum.bind(str,3,4);
		console.log(fun());
		</script>
	</head>
	<body>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/wx1995sss/article/details/87256897
js
今日推荐