js 實現繼承

2021-09-01 21:52:04 字數 2304 閱讀 6338

在開始擺弄**之前,應該搞清楚使用繼承的目的和能帶來什麼好處。一般來說,在設計類的時候,我們希望能減少重複性的**,並且盡量弱化類之間的耦合。而要做到這兩者都兼顧是很難的,我們需要根據具體的條件和環境下決定我們應該採取什麼方法。根據我們對物件導向語言中繼承的了解,繼承會帶類直接的強耦合,但js由於其特有的靈活性,可以設計出強耦合和弱耦合,高效率和低效率的**。而具體用什麼,看情況。

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 parent(username) 

} function child(username,password)

} var parent = new parent("zhangsan");

var child = new child("lisi","123456");

parent.hello();

child.hello();

child.world();

a、第乙個引數與call方法的第乙個引數一樣,即賦值給類(即方法)中出現的this

b、第二個引數為陣列型別,這個陣列中的每個元素依次賦值給類(即方法)所接受的引數

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 extend(subclass,superclass);

f.prototype = superclass.prototype;

subclass.prototype = new f();

subclass.prototype.constructor = subclass;

subclass.superclass = superclass.prototype; //加多了個屬性指向父類本身以便呼叫父類函式

if(superclass.prototype.constructor == object.prototype.constructor)

}var person = function(name);

person.prototype =

};var chinese = function(name, nation);

extend(chinese, person);

chinese.prototype.getnation = function();

var c = new chinese("liyatang","china");

alert(c.getname());

call 方式最簡單,但是缺少靈活性.

prototype方式很靈活,可以動態的給物件建立屬性和方法.

所以,js繼承可以通過call + prototype方式結合使用.

JS實現繼承

1.使用物件冒充實現繼承 該種實現方式可以實現多繼承 實現原理 讓父類的建構函式成為子類的方法,然後呼叫該子類的方法,通過this關鍵字給所有的屬性和方法賦值 function parent firstname function child firstname var mychild new chi...

js實現繼承

通過修改原型的指向實現的繼承,雖然實現了繼承,但是繼承後的例項物件的屬性值都是一樣的 都是 zs,20,男 只有自己定義的屬性值不一樣。使用這種方式實現的繼承,不能繼承父類的方法,只能繼承父類的屬性。方式一 var obj1 通過這種方式只是讓obj2指向了和obj1相同的一塊位址空間,記憶體中只有...

js 實現繼承

1.物件冒充 例項 var parent function username var child function username,age var p new parent tim var s new child little time 5 p.getusername s.getusername ...