1. 程式人生 > >箭頭函式中的this指向

箭頭函式中的this指向

普通函式:this指向分為4種情況,

1. obj.getName();//指向obj
2.getName();//非嚴格模式下,指向window,嚴格模式下為undefined
3. var a = new A();
   a();//指向A本身
4.getName().apply(obj);//指向obj

箭頭函式:箭頭函式本身是沒有this和arguments的,在箭頭函式中引用this實際上是呼叫的是定義時的上一層作用域的this。
這裡強調的是上一層作用域,是因為物件是不能形成獨立的作用域的。

例如:

(1)、

var obj = {
	say: function() {
		var f1 = ()=>{
		    console.log("1111",this);	
		}
		f1();
	}
}
var o = obj.say;

o();//f1執行時,say函式指向window,所以f1中的this指向window
obj.say();//f1執行時,say函式指向obj,所以f1中的this指向obj;

(2)、

var ojb = {
    pro: {
        getPro: ()=>{
            console.log(this);
        }
    }
}

obj.pro.getPro();//this指向的是window,因為箭頭函式定義時,getPro的上一級是pro,是一個物件,不能形成單獨的作用域,故指向window。