1function
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,則會出現父子的原型物件繫結在一起,即父子的原型物件的引用相等,相當於指向同乙個位址,改變子物件的原型,父物件的原型也會隨之改變,
若遍歷父物件的原型和子物件的原型,發現兩個完全相同個。
1var 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 ...