函数this指向

this指向


严格模式下:this指向undefined(自调用||自执行)


非严格模式下:this指向window


什么是严格模式?


"use strict"


在全局模式下写,整个js文件都是严格模式,


在函数内部写,当前函数就是严格模式的。


注意:严格模式和非严格模式,在语法上有一点区别


局部函数下  函数内部


1.元素触发事件时,this指向是当前触发事件的元素
            btn.onclick = function(){

			console.log(this)//btn

		}

2.对象调用方法时,this指向这个对象(谁调用函数,这个函数就指向谁)

        
               var name="aa";
		var dog={
			name : "taidi"
			jump : function(){
					console.log(this.name)	
				}
		}

		dog.jump()//taidi

3.函数自己执行时,this指向的是window

	        function foo(){

			console.log(this)
		}

		foo()//window

4.回调函数(定是函数,map,forEach函数等),this指向的是window


             var people={
			eat : function(){
				setInterval(function(){
					console.log(this)
				})
			}
		}
		people.eat()//window

5. 可以使用call, apply函数改变,,this指向对象

        call   apply 修改了执行函数

         call==>

             function  tell_call(){

			console.log(this)

		}

		var cat={

			name : "波斯猫"

		}

		test_call.call(cat)//{name : "波斯猫"}
		test_call.call(0)//number 0

apply==>

                function test_apply(){

			console.log(arguments)
			console.log(this)
		}

		test_apply.apply(cat,[1,2,3,4])
apply函数可以把参数放在一个数组中传递进去



记住:谁调用的函数,this就执行谁


call和apply函数的区别


call参数要一个个的传递进去。
apply可以吧多个参数写在数组里面的每一个元素,而不是整个数组

猜你喜欢

转载自blog.csdn.net/zhang_z97/article/details/80680779