js中的幾種繼承方式

2021-07-05 15:06:43 字數 1954 閱讀 3512

js繼承有5種實現方式:

1、繼承第一種方式:物件冒充

function parent(username)

} function child(username,password)}

var parent = new parent(「zhangsan」);

var child = new child(「lisi」,」123456」);

parent.hello();

child.hello();

child.world();

2、繼承第二種方式:call()方法方式

call方法是function類中的方法

call方法的第乙個引數的值賦值給類(即方法)中出現的this

call方法的第二個引數開始依次賦值給類(即方法)所接受的引數

function test(str)

var object = new object();

object.name = 「zhangsan」;

test.call(object,」langsin」);//此時,第乙個引數值object傳遞給了test類(即方法)中出現的this,而第二個引數」langsin」則賦值給了test類(即方法)的str

function parent(username)

} function child(username,password)}

var parent = new parent(「zhangsan」);

var child = new child(「lisi」,」123456」);

parent.hello();

child.hello();

child.world();

this.password = password; 

this.world = function()

}

var parent = new parent(「zhangsan」);

var child = new child(「lisi」,」123456」);

parent.hello();

child.hello();

child.world();

4、繼承的第四種方式:原型鏈方式,即子類通過prototype將所有在父類中通過prototype追加的屬性和方法都追加到child,從而實現了繼承

function person()

person.prototype.hello = 「hello」;

person.prototype.sayhello = function()

function child()

child.prototype = new person();//這行的作用是:將parent中將所有通過prototype追加的屬性和方法都追加到child,從而實現了繼承

child.prototype.world = 「world」;

child.prototype.sayworld = function()

var c = new child();

c.sayhello();

c.sayworld();

5、繼承的第五種方式:混合方式

混合了call方式、原型鏈方式

function parent(hello)

parent.prototype.sayhello = function()

function child(hello,world)

child.prototype = new parent();//將父類的方法繼承過來

child.prototype.sayworld = function()

var c = new child(「zhangsan」,」lisi」);

c.sayhello();

c.sayworld();

js繼承幾種方式

js作為物件導向的弱型別語言,繼承也是其非常強大的特性之一。那麼如何在js中實現繼承呢?讓我們拭目以待。既然要實現繼承,那麼首先我們得有乙個父類,如下 定義乙個動物類 function animal name 原型方法 animal.prototype.eat function food 核心 將父...

js中實現繼承的幾種方式

function person var p1 new person var p2 new person console.log p1.say p2.say falseperson.prototype.say function person.prototype run function var o1 ...

幾種js的繼承方式

1 繼承第一種方式 物件冒充 function super username function sub username var supernew new super super var subnew new sub sub supernew.hello subnew.hello subnew.wo...