標籤:
原型對象:
每個對象都有一個參考對象,這個參考對象稱之為原型對象。原型對象有自己的屬性和方法。當A是B的原型對象時,那 麼B擁有A中的所有屬性和方法。
原型對象的工作原理:
使用原型對象定義一個新的對象時,該對象不會立即擁有原型對象的屬性和方法,在調用的時候本對象內部沒有的屬性和方法是才回去調用原型中的屬性和方法。(動態分配).
原型對象的引用:
在javascript中每一個函數都定義了一個prototype屬性用於引用原型對象。
Js代碼
1 function computer(){ 2 3 this.name="thinkPad 500"; 4 this.factory="聯想"; 5 this.price=5000; 6 this.size=17; 7 } 8 /* 9 *讀取函數中的prototype,預設情況下為空白10 */11 for( pro in computer.prototype){12 document.write(computer.prototype,"<br>");13 } 14 //沒有繼承原型對象中屬性15 var mycomputer=new computer();16 for( pro in mycomputer){17 document.write(pro,":",mycomputer[pro],"<br>");18 } 19 computer.prototype.interface="VAG";20 //添加原型對象的屬性21 for( pro in computer.prototype){22 document.write(pro,":",computer.prototype[pro],"<br>");23 } 24 //繼承原型對象中屬性25 var mycomputer=new computer();26 for( pro in mycomputer){27 document.write(pro,":",mycomputer[pro],"<br>");28 }
原型對象的繼承
繼承是通過原型對象實現
Js代碼
1 <script type="text/javascript"> 2 //定義一個工人 3 function worker(){ 4 this.name=""; 5 this.address=""; 6 } 7 //定義一個部門經理 8 function manager(_dept){ 9 this.dept=_dept;10 }11 //定義繼承關係12 manager.prototype=new worker();13 //建立計劃部門經理14 var jh=new manager("計劃");15 for(pro in jh){16 document.write(pro,":",jh[pro],"<br>");17 }18 //當前jh有效沒有改變原型對象中的值19 jh.name="計劃部門經理";20 jh.address="計劃部";21 for(pro in jh){22 document.write(pro,":",jh[pro],"<br>");23 }24 //原型對象中的值沒有被修改25 var rs=new manager(‘人事‘);26 for(pro in rs){27 document.write(pro,":",rs[pro],"<br>");28 }29 //修改原型對象中的值,將會在繼承的對象中體現,如果繼承類中沒有覆蓋30 31 manager.prototype.address="成都市";32 //覆蓋後address的值還是原來的計劃33 for(pro in jh){34 document.write(pro,":",jh[pro],"<br>");35 }36 //沒有覆蓋address的值是成都市37 for(pro in rs){38 document.write(pro,":",rs[pro],"<br>");39 }40 41 </script>
通過原型對象可以為所有繼承對象添加屬性和刪除屬性,所有繼承對象都將統一顯示。
javascript -- 原型對象