Bagaimana untuk menentukan kelas dalam pengetahuan JavaScript_Basic

WBOY
Lepaskan: 2016-05-16 16:36:19
asal
1070 orang telah melayarinya

Ini adalah cara asal saya menulisnya:

function Dog(){
  this.name = 'hachi';
}

Dog.prototype = {
  makeNoise:function(){
    alert('wangwangwang');
  }
};

Salin selepas log masuk

Kemudian saya melihat cara penulisan lain yang sedikit lebih rumit dan kelihatan tidak perlu: ​​

function Dog(){
  var privateVariable = 'secret';

  var fn = function(){
    //...
  }

  fn.prototype = {
    makeNoise:function(){
      alert('wangwangwang');
    }
  }

  return fn;
}

Salin selepas log masuk

Fungsi Anjing di sini sebenarnya ialah fungsi membuat kelas, yang mengembalikan kelas Anjing sebenar.
Saya merasakan bahawa kelebihan melakukan ini adalah enkapsulasi yang lebih baik.
Contohnya, privateVariable di sini ialah pembolehubah peribadi:

var d = new Dog;
d.privateVariable //undefined
Salin selepas log masuk

Selain itu, jika anda menambah ayat pada penghujung contoh pertama:

Dog.prototype = {
  //e...WTF??
}
Salin selepas log masuk

Dengan cara ini Anjing bukan lagi Anjing~

Pemahaman kemudian:
Kaedah di atas untuk mencipta kelas baharu secara langsung mengatasi objek prototaip. Dengan cara ini, sifat terbina dalam asal prototaip telah hilang (hujah, panggilan, memohon, dll.).
Kaedah berikut untuk mencipta kelas baharu nampaknya lebih baik:

var Dog = function(name){
  this.name = name;
  var privateVariable = 'you cannot see me.';
  this.getPrivate = function(){return privateVariable;};
}
Salin selepas log masuk

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!