js prototype
- function?Person(name,sex)?{?? //Person類的構造函數??? ??
- ???? this .name?=?name;??? ??
- ???? this .sex?=?sex;??? ??
- }??? ??
- Person.prototype.age?=? 12 ;??? //為Person類的prototype屬性對應的prototype對象的屬性賦值,??? ??
- ????????????????????????????? //相當于為Person類的父類添加屬性??? ??
- Person.prototype.print?=?function()?{? //為Person類的父類添加方法??? ??
- ????alert( this .name+ "_" + this .sex+ "_" + this .age);??? ??
- };??? ??
- ?? ??
- var?p1?=? new ?Person( "name1" , "male" );? //p1的age屬性繼承子Person類的父類(即prototype對象)??? ??
- var?p2?=? new ?Person( "name2" , "male" );??? ??
- ?? ??
- p1.print();?? //name1_male_12??? ??
- p2.print();?? //name2_male_12??? ??
- ?? ??
- p1.age?=? 34 ;? //改變p1實例的age屬性???p1屬性在不指向Person的prototype屬性 ??
- p1.print();?? //name1_male_34??? ??
- p2.print();?? //name2_male_12??? ??
- ?? ??
- Person.prototype.age?=? 22 ;?? //改變Person類的超類的age屬性??? ??
- p1.print();?? //name1_male_34(p1的age屬性并沒有隨著prototype屬性的改變而改變)??? ??
- p2.print();?? //name2_male_22(p2的age屬性發生了改變)??? ??
- ?? ??
- p1.print?=?function()?{?? //改變p1對象的print方法??? ??
- ????alert( "i?am?p1" );??? ??
- }??? ??
- ?? ??
- p1.print();?? //i?am?p1(p1的方法發生了改變)??? ??
- p2.print();?? //name2_male_22(p2的方法并沒有改變)??? ??
- ?? ??
- Person.prototype.print?=?function()?{? //改變Person超類的print方法??? ??
- ????alert( "new?print?method!" );??? ??
- }??? ??
- ?? ??
- p1.print();?? //i?am?p1(p1的print方法仍舊是自己的方法)??? ??
- p2.print();?? //new?print?method!(p2的print方法隨著超類方法的改變而改變) ?
posted on 2009-08-07 13:28 李云澤 閱讀(1660) 評論(0) 編輯 收藏 所屬分類: javascript