JS中this关键字

this代表的是 执行这个this代码的环境对象

1、在脚本中,this代表的是window全局对象;在全局函数中,this代表的是window全局对象.

2、全局变量会在脚本执行时 把变量名设置为全局对象window的属性;全局函数会在脚本执行时 把函数设置为全局对象window的方法

<script>
        var a = 20 //等价于window.a = 20
    		function fn(){
			console.log(this) //window
        }
        fn()//等价于window.fn()
        
</script>

 3、把this看作函数调用时的调用者。

<script>
        function  fn () {
		  	console.log(this)//window
		  }

        fn()//这个代码不是fn在调用 fn代表的是一个函数   隐式的window才是调用者
 //-----------------------------------------------------------

	  var obj2={fn:function(){console.log(this)}}
		  var arr=[]
		  arr[0]=100
		  arr[1]=obj2.fn
		  
		  console.log(arr[1])//打印fn这个函数
		  arr[1]()//打印arr数组
		  obj2["fn"]()//打印obj2对象

//---------------------------------------------------------------
 var obj={
			  name:"father",
			  son:{
				  name:"son",
				  say:function(){
					  console.log(this)
				  }
			  }
		  }
		   obj.son.say()//打印son对象
		  
		  var a=obj.son.say //把这个函数赋值给变量a
		  a() //打印window对象 全局变量a是隐式window对象的属性
		  var arr=[a]//把函数赋给arr数组
		  arr[0]()//打印arr数组 
		  

</script>

4、 为何要打印this?

          this代表了一个对象  常常在项目中我们要给一个对象操作成员

5、补充

匿名函数

<script>
      (function(){
			  console.log(this) //打印window
		  })();
</script>

小括号 它是一种运算符 指向结果

6、this降低难度 

模拟v8去执行js代码 this是谁  不要去看运行时   看调用的代码

            1.看this在哪个函数里面:离this这个单词最近(嵌套)的function/方法这个单词就是那个函数,没有就是window

            2.这个函数找了 是哪个代码让这个找到的函数执行的  ,直接辨别调用者(调用者和持有者),调用者就为this指向对象

练习:

<script>
	        obj.fn(this)
			var obj={fn:function(){this}}
			// obj持有者
			//obj.fn //调用者 this指向obj
			var a=obj.fn
			a()//调用者 this指向window
		
			//所以this指向那个对象具体看那个调用
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值