Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menentukan kelas dalam pengetahuan JavaScript_Basic

Bagaimana untuk menentukan kelas dalam pengetahuan JavaScript_Basic

WBOY
WBOYasal
2016-05-16 16:36:191109semak imbas

Ini adalah cara asal saya menulisnya:

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

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

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;
}

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

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

Dog.prototype = {
  //e...WTF??
}

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;};
}

Kenyataan:
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