cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Masalah yang ditunjukkan oleh ini

function Persion(name) {
    var self = this;
    self.name = name;
    console.log(self);
    console.log(this);
}

Persion.prototype = {
    before: function() {
        // var self = this;
        console.log('before' + self);
        console.log('before' + this);

        return this;
    },

    after: function(){
        // var self = this;
        console.log('after' + self);
        console.log('after' + this);

        return this;
    }
};


var a = new Persion('Tom');
a.before().after();

Apabila var a = new Persion('Tom'), self dan ini masih menunjuk ke Persion Apabila melaksanakan a.before().after(), self menunjuk ke Window tiada perubahan buatan diri, jadi mengapa nilai diri berubah Apakah prinsipnya?

Tambahan:
Ia adalah ayat teratas var self= ini; semasa menyahpepijat, saya mendapati bahawa diri berubah daripada Persion ke tetingkap Saya mengulas pengisytiharan sebelum dan selepas dan mendapati bahawa apabila diri tidak diisytiharkan, outputnya tidak ditentukan tetapi. tingkap

ringa_leeringa_lee2817 hari yang lalu531

membalas semua(3)saya akan balas

  • ringa_lee

    ringa_lee2017-05-19 10:10:29

    Pembolehubah diri tidak ditakrifkan dalam fungsi sebelumnya, jadi diri di sini merujuk kepada window.self. Harta
    diri mengembalikan rujukan baca sahaja kepada tetingkap itu sendiri. Bersamaan dengan harta Window.

    balas
    0
  • 黄舟

    黄舟2017-05-19 10:10:29

    Nilai _diri pada sebelum dan selepas anda tidak dapat ditentukan

    balas
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:10:29

    Saya faham bahawa terdapat masalah Masalah saya diekstrak daripada kod saya dan dipermudahkan Terdapat bahagian tak segerak dalam kod asal, dan ini menjadi tetingkap dalam bahagian tak segerak. Apabila menyahpepijat, saya mendapati bahawa diri dalam ayat atas var self= ini berubah daripada Persion kepada tetingkap, jadi saya fikir ada sesuatu yang tidak kena dengan diri.

    balas
    0
  • Batalbalas