js中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。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM