Rumah > Soal Jawab > teks badan
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_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.
巴扎黑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.