Rumah >hujung hadapan web >tutorial js >5 cara untuk melaksanakan warisan dalam kemahiran js_javascript

5 cara untuk melaksanakan warisan dalam kemahiran js_javascript

WBOY
WBOYasal
2016-05-16 15:28:28990semak imbas

Contoh dalam artikel ini menerangkan 5 cara untuk melaksanakan pewarisan dalam js. Kongsikan dengan semua orang untuk rujukan anda, butirannya adalah seperti berikut:

1. Cara pewarisan pertama: penyamaran objek

function Parent(username){
  this.username = username;
  this.hello = function(){
   alert(this.username);
  }
}
function Child(username,password){
  //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现继承
  //第一步:this.method是作为一个临时的属性,并且指向Parent所指向的对象,
  //第二步:执行this.method方法,即执行Parent所指向的对象函数
  //第三步:销毁this.method属性,即此时Child就已经拥有了Parent的所有属性和方法 
  this.method = Parent;
  this.method(username);//最关键的一行
  delete this.method;
  this.password = password;
  this.world = function(){
   alert(this.password);
  }
}
var parent = new Parent("zhangsan");
var child = new Child("lisi","123456");
parent.hello();
child.hello();
child.world();

2. Cara pewarisan kedua: kaedah call()

Kaedah panggilan ialah kaedah dalam kelas Fungsi
Nilai parameter pertama kaedah panggilan diberikan kepada
ini yang muncul dalam kelas (iaitu kaedah) Parameter kedua kaedah panggilan mula diberikan kepada parameter yang diterima oleh kelas (iaitu kaedah)

function test(str){
  alert(this.name + " " + str);
}
var object = new Object();
object.name = "zhangsan";
test.call(object,"langsin");//此时,第一个参数值object传递给了test类(即方法)中出现的this,而第二个参数"langsin"则赋值给了test类(即方法)的str
function Parent(username){
  this.username = username;
  this.hello = function(){
   alert(this.username);
  }
}
function Child(username,password){
  Parent.call(this,username);
  this.password = password;
  this.world = function(){
   alert(this.password);
  }
}
var parent = new Parent("zhangsan");
var child = new Child("lisi","123456");
parent.hello();
child.hello();
child.world();

3. Cara pewarisan ketiga: kaedah apply()

Kaedah apply menerima 2 parameter,
A. Parameter pertama adalah sama dengan parameter pertama kaedah panggilan, iaitu, diperuntukkan kepada
ini yang muncul dalam kelas (iaitu kaedah) B. Parameter kedua ialah jenis tatasusunan Setiap elemen dalam tatasusunan ini diperuntukkan kepada parameter

yang diterima oleh kelas (iaitu kaedah) secara bergilir-gilir.
function Parent(username){ 
  this.username = username; 
  this.hello = function(){ 
   alert(this.username); 
  } 
} 
function Child(username,password){ 
  Parent.apply(this,new Array(username)); 
  this.password = password; 
  this.world = function(){ 
   alert(this.password); 
  } 
} 
var parent = new Parent("zhangsan"); 
var child = new Child("lisi","123456"); 
parent.hello(); 
child.hello(); 
child.world(); 

4. Cara pewarisan keempat: kaedah rantaian prototaip , iaitu subkelas menggunakan prototaip untuk menambahkan semua atribut dan kaedah yang ditambahkan melalui prototaip dalam kelas induk kepada Anak, dengan itu merealisasikan pewarisan

function Person(){ 
} 
Person.prototype.hello = "hello"; 
Person.prototype.sayHello = function(){ 
  alert(this.hello); 
} 
function Child(){ 
} 
Child.prototype = new Person();//这行的作用是:将Parent中将所有通过prototype追加的属性和方法都追加到Child,从而实现了继承 
Child.prototype.world = "world"; 
Child.prototype.sayWorld = function(){ 
  alert(this.world); 
} 
var c = new Child(); 
c.sayHello(); 
c.sayWorld(); 

5. Cara pewarisan kelima: kaedah campuran

Kaedah panggilan bercampur dan kaedah rantai prototaip

function Parent(hello){ 
  this.hello = hello; 
} 
Parent.prototype.sayHello = function(){ 
  alert(this.hello); 
} 
function Child(hello,world){ 
  Parent.call(this,hello);//将父类的属性继承过来 
  this.world = world;//新增一些属性 
} 
Child.prototype = new Parent();//将父类的方法继承过来 
Child.prototype.sayWorld = function(){//新增一些方法 
  alert(this.world); 
} 
var c = new Child("zhangsan","lisi"); 
c.sayHello(); 
c.sayWorld();

Saya harap artikel ini akan membantu semua orang dalam pengaturcaraan JavaScript.

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