搜尋

首頁  >  問答  >  主體

javascript - JS中的this對象

var str="hello";
var obj={
str:"world",
saystr:this.str
};
alert(obj.saystr); / /結果是hello

請問結果為什麼是"hello",而不是"world"

阿神阿神2753 天前664

全部回覆(4)我來回復

  • 習慣沉默

    習慣沉默2017-05-19 10:28:19

    這篇文章可以解決大部分 this 的問題。

    回覆
    0
  • 漂亮男人

    漂亮男人2017-05-19 10:28:19

    this指向什么,由包含它的最近的一个function决定的;
    如果没找到function,那么this就是全局物件。
    你的題目中,就是後者。

    稍微修改一下程式碼:

    var str="hello";
    var obj={
    str:"world",
    saystr: function() {
         alert(this.str)
    }
    };
    obj.saystr();

    就是第一種情況了。

    總結一下:確定this通常分兩步驟走:

    1. 先找到包含this的最近的一个function的最近的一個

    2. function然後看這個

      被呼叫的方式。具體看這裡。
    🎜

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-19 10:28:19

    雷雷 雷雷

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:28:19

    把題目轉換成下面這樣更好理解:

    var str = "hello";
    var obj = {};
    obj.str = "world";
    obj.saystr = this.str;
    

    所以一看就明白this指向的是window全域對象,所以obj.saystr結果就是hello

    回覆
    0
  • 取消回覆