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
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.
Nilai _diri pada sebelum dan selepas anda tidak dapat ditentukan
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.