JS封裝繼承函式

2022-03-28 05:01:13 字數 1427 閱讀 4915

1

function

extend(child,parent)

3 f.prototype=parent.prototype;

4 child.prototype=new

f();

5 child.prototype=child;

6 child.uber=parent.prototype; //uber指向父物件的原型。方便子物件呼叫父物件原型中的重寫的方法。7}

8function

shape(){}

9 shape.prototype.name="shape";

10 shape.prototype.color="blue";

1112

function

circle(radius)

1516 circle.prototype.name="circle";

17 circle.prototype.gets=function

()20

extend(circle,shape);

2122

var cir=new circle(2);

23 alert(cir.name); //

"circle"

24 alert(cir.color); //

"blue"

25 alert(cir.uber.name); //

"shape"

26 alert(cir.gets()) //

"12.56"

extend函式的第乙個引數是子構造器,第二個引數是父構造器;

為什麼子構造器的原型物件不直接指向父構造器的原型物件,是因為若child.prototype=parent.prototype,則會出現父子的原型物件繫結在一起,即父子的原型物件的引用相等,相當於指向同乙個位址,改變子物件的原型,父物件的原型也會隨之改變,

若遍歷父物件的原型和子物件的原型,發現兩個完全相同個。

1

var cir=new circle(2);

2var shape1=new

shape();

3 cir.prototype.name="this is circle";45

6for(var i in

shape1)10}

1112

//name:circle

13//

color:blue

14//

gets:function ()

1718

19for(var i in

cir)23}

2425

//name:circle

26//

color:blue

27//

gets:function ().

JS封裝繼承函式

1 function extend child,parent 3 f.prototype parent.prototype 4 child.prototype new f 5 child.prototype child 6 child.uber parent.prototype uber指向父物件的...

JS封裝繼承函式

1 function extend child,parent 3 f.prototype parent.prototype 4 child.prototype new f 5 child.prototype child 6 child.uber parent.prototype uber指向父物件的...

js繼承封裝

function.prototype.extends function superclass f.prototype superclass.prototype this prototype newf 獲取當前類所有屬性名 var names object.getownpropertynames o ...