JS封裝繼承函式

2022-07-29 07:42:09 字數 1087 閱讀 2228

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 }8 function shape(){}

9 shape.prototype.name="shape";

10 shape.prototype.color="blue";

11 12 function circle(radius)

15 16 circle.prototype.name="circle";

17 circle.prototype.gets=function()

20 extend(circle,shape);

21 22 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);

2 var shape1=new shape();

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

4 5

6 for(var i in shape1){

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 ...