Rumah  >  Artikel  >  hujung hadapan web  >  Javascript mesti mempelajari kemahiran polimorfisme setiap hari_javascript

Javascript mesti mempelajari kemahiran polimorfisme setiap hari_javascript

WBOY
WBOYasal
2016-05-16 15:14:08996semak imbas

Hai kawan-kawan, hari ini kita akan meneruskan kandungan sebelumnya cara untuk menggunakan antara muka, jadi ini juga membawa sedikit kekeliruan kepada program js Anda tidak perlu terlalu risau tentang masalah ini, kerana versi ECMAScript ini akan menyelesaikan masalah ini untuk kami Kembali ke topik, polimorfisme OOP, kita sudah boleh memahami dengan jelas rupa warisan, iaitu, mula-mula mengisytiharkan kelas induk, dan kemudian kita boleh menulis banyak subkelas untuk mewarisi atribut dan kaedah kelas induk jumlah kod paling sedikit untuk mencapai fungsi yang sama seperti kelas induk Ini adalah warisan. Serta-merta, rakan sekelas menimbulkan soalan: Saya telah membaca warisan sebelumnya untuk masa yang lama, dan saya boleh memahaminya, tetapi saya tidak tahu apa kegunaannya Mengapa kita perlu menulis begitu banyak kelas warisan? Soalan ini segera mencecah tanda dan agak kritikal Tanpa kewujudan polimorfisme, warisan yang kami sebutkan tadi benar-benar tidak berguna, kerana semua kelas yang diwarisi kami adalah salinan yang sama dan tidak mempunyai ciri. Contohnya:

Kami dapat melihat dengan jelas masalah Panda A dan Panda B adalah betul-betul sama dengan kelas induk panda Walaupun kami boleh menulis banyak subkelas dengan mudah, jadi kami hanya boleh mencapai tujuan kami secara langsung menggunakan atribut dan kaedah kelas induk Ya, dengan cara ini, saya merasakan bahawa pewarisan OOP tidak berguna perkara-perkara sebelum ini hanya apa yang anda telah belajar, tidak perlu belajar apa-apa dengan sia-sia. Sekarang mari kita bercakap tentang tambahan warisan dan polimorfisme Lihat gambar contoh:

Sama ada manusia atau haiwan lain, mereka terus membiak dan berkembang Setiap anak kelihatan sama, tetapi sebenarnya mereka mempunyai sifat atau tingkah laku unik mereka sendiri untuk mandi di bawah keadaan istimewa, dan ia mempunyai sifat kebersihannya sendiri Dan Panda B adalah seorang yang mahir dan belajar untuk mengambil gadis (saya dan bapa saudara saya tidak mempelajarinya, tetapi ia telah mempelajarinya), dan ia mempunyainya. atribut daya tarikan sendiri, jadi kita boleh Ia boleh dilihat dengan jelas bahawa apabila kita perlu menulis subkelas untuk mewarisi kelas induk, ia mesti mempunyai tingkah laku atau atribut yang sama seperti kelas induk, dan ia juga mesti mempunyai tingkah laku atau atribut uniknya sendiri , supaya kita menyimpan tingkah laku yang sama Atau penulisan kod atribut (manfaat yang dibawa oleh pemikiran OOP sekali lagi ditunjukkan), mari lihat kod contoh di bawah:

//遗传继承函数
function Extend(Children,Parent){
  for(var p in Parent){
    if(typeof Children[p] == "undefined"){
      Children[p] = Parent[p];
    }
  }
}

//熊猫父类
function Panda(){
  //颜色
  this.color = "黑色交错";
  //健康值
  this.health = 100;
  //可爱值
  this.lovely = 80;
  //年龄
  this.age = "3岁";
}
//吃
Panda.prototype.Eat = function(){
  console.log("吃竹子");
}
//拉
Panda.prototype.Shit = function(){
  console.log("拉了一坨翔");
}
//睡
Panda.prototype.Sleep = function(){
  console.log("美美地睡了一整天");
}
//交配
Panda.prototype.Mating = function(){
  console.log("熊猫的爱爱也是为了下一代嘛");
}

//熊猫A
function Panda_A(){
  //讲卫生度
  this.lovehealth = 60;
  
  Extend(this,new Panda());
}
//洗澡
Panda_A.prototype.Bath = function(){
  console.log("为了不生病,就得讲卫生,我去洗澡了");
  //洗一次澡,讲卫生程度 + 1
  this.lovehealth += 1;
}

//熊猫B
function Panda_B(){
  //魅力值
  this.charm = 90;
  
  Extend(this,new Panda());
}
//泡妞
Panda_B.prototype.GetGirls = function(){
  console.log("为了族群的繁荣,我就先去泡妞去了,谁叫我的魅力这么高呢?");
  //泡一次妞,魅力值 - 1
  this.charm -= 1;
}

Mari kita lihat contoh di bawah adakah ia sama seperti yang diterangkan sebelum ini?

Sama ada tika kelas induk atau tika subkelas, atribut dan fungsi gelagat kelas induk (dikongsi) boleh digunakan seperti biasa. Mari lihat yang unik di bawah?

Tingkah laku yang paling dibimbangkan oleh semua orang belum diuji lagi, iaitu, Panda B boleh mengambil gadis Saya tidak akan menyesuaikan diri dengan citarasa semua orang, jadi saya akan mengujinya dengan segera

Setelah lulus contoh di atas, kita sudah tahu apa itu polimorfisme Sekarang sesetengah pelajar bertanya: Kami telah dapat mencapai polimorfisme sebelum ini, tetapi kami baru melihat beberapa sifat dan tingkah laku yang lebih unik, kemudian Bolehkah beberapa sifat dan tingkah laku asal. berubah? Kerana kita ingin mensimulasikan objek, kita perlu mencapai simulasi yang sama yang mungkin. Contohnya, jika terdapat kelas panda C yang lain, mereka telah berkembang ke tahap yang lebih maju dan tidak perlu lagi makan buluh Mereka sebenarnya mula makan seperti manusia :

//熊猫C
function Panda_C(){
  
  Extend(this,new Panda());
}
//吃
Panda_C.prototype.Eat = function(){
  //吃饭
  console.log("我们要进化得比人类更高级,所以我们就开始吃饭了,不再吃竹子!!");
}

Seperti yang anda lihat, selagi terdapat atribut atau gelagat yang berbeza daripada kelas induk, kita boleh mengatasinya dengan mengatasinya untuk mencapai keperluan khas subkelas.

Untuk meringkaskan, hari ini kita akan menambah idea yang diwarisi dari sebelumnya untuk mencapai simulasi polimorfik dan idea OOP. Saya percaya semua orang sudah mempunyai pemahaman mereka sendiri tentang OOP, iaitu mensimulasikan kod objek. Untuk menulis, ini mempunyai dua kelebihan:

1. Tingkatkan kadar penggunaan semula kod dan tingkatkan kecekapan kerja.

2. Kod telah disimulasikan dalam objek Kod tersusun ini memudahkan pengurusan kami, penyelenggaraan dan pengembangan kemudian.

Di atas adalah keseluruhan kandungan artikel ini, saya harap ia akan membantu kajian semua orang.

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