JS中this指向问题

简单来说一下函数中this指向问题,

1.this是什么?

   任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是 window

   所以函数内部都有一个变量this,它的值是调用当前函数的对象

2.如何确定this的值?

   test()  :  指向window

   p.test()  :  指向p

   new test()  :  指向 新创建的对象

   p.call(obj)  :  指向 obj

function Person(color){
		console.log(this)
		this.color = color
		this.getColor = function(){
			console.log(this)
			return this.color
		}
		this.setColor = function(color){
			console.log(this)
			return this.color = color
		}

	}
	Person('red'); // this 指向 window

	var p = new Person('yellow') // this 指向 p

	p.getColor();// this 指向 p

	var obj = {}
	p.setColor.call(obj,'black') // this 指向 obj

	var test = p.setColor;
	test();// this 指向 window


	function fun1(){
		function fun2(){
			console.log(this)
		}
		fun2() // this 指向 window
	}
	fun1()

猜你喜欢

转载自blog.csdn.net/Hanhanyoona/article/details/82380275
今日推荐