Rumah  >  Soal Jawab  >  teks badan

objek ini dalam JS

var str="hello";
var obj={
str:"world",
saysstr:this.str
};
alert(obj.saystr); //Hasilnya ialah hello

Sila beritahu saya mengapa hasilnya adalah "hello" dan bukannya "dunia"

阿神阿神2730 hari yang lalu609

membalas semua(4)saya akan balas

  • 習慣沉默

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

    Artikel ini boleh menyelesaikan kebanyakan masalah ini.

    balas
    0
  • 漂亮男人

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

    Apa yang ditunjuk oleh ini ditentukan oleh fungsi terdekat yang mengandunginya;
    Jika fungsi tidak ditemui, maka ini ialah objek global.
    Dalam soalan anda, ia adalah yang terakhir. this指向什么,由包含它的最近的一个function决定的;
    如果没找到function,那么this就是全局对象。
    你的题目中,就是后者。

    稍微修改一下代码:

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

    就是第一种情况了。

    总结一下:确定this通常分两步走:

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

    2. 然后看这个function

      Ubah suai sedikit kod:
    3. rrreee
    Ini adalah situasi pertama. 🎜 🎜Untuk meringkaskan: Menentukan ini biasanya melibatkan dua langkah: 🎜
    1. 🎜Mula-mula cari fungsi terdekat yang mengandungi ini;🎜🎜
    2. 🎜Kemudian lihat bagaimana fungsi ini dipanggil. Lihat di sini untuk butiran. 🎜🎜 🎜

      balas
      0
  • 滿天的星座

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

      alert(obj.saystr);
    这句话实际等同于:
    
     alert(this.str);

    balas
    0
  • 伊谢尔伦

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

    Tukar soalan kepada yang berikut untuk pemahaman yang lebih baik:

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

    Jadi, anda boleh melihat sekilas pandang bahawa ini menghala ke objek global tetingkap, jadi hasil obj.saystr ialah hello

    balas
    0
  • Batalbalas