1 function extend(child,parent)extend函式的第乙個引數是子構造器,第二個引數是父構造器;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"
為什麼子構造器的原型物件不直接指向父構造器的原型物件,是因為若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 ...