關於 js 函數參數的this


先看一道面試題:

var number = 10;
function fn() {
  console.log(this.number);
}
var obj = {
  number: 2,
  show: function(fn) {
    this.number = 3;
    fn();
    arguments[0]();
  }
};
obj.show(fn);

打印的結果如下:

 

 

 obj.show 中,第一個函數執行 fn() 結果為 10,第二個 arguments[0]() 執行結果為 undefined。

原因是:

第一個 fn 在執行時,this 指向 window,window,number 為10;

第二個 fn 在執行時,實際上為 argements.0 在執行,也就是此時的 this 為 arguments(畢竟 arguments 為偽數組,偽數組也還是對象,可理解為 obj.0)。因為 arguments 的屬性中沒有 number 這個屬性,所以返回 undefined


免責聲明!

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



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