JavaScript 原型繼承

來源:互聯網
上載者:User

Object.prototype
JavaScript是基於原型繼承的,任何對象都有一個prototype屬性。Object.prototype是所有對象的根,並且不可改變。 複製代碼 代碼如下:Object.prototype=null;
alert(Object.prototype);//[object Object]

Object與Object.prototype
Object繼承於Object.prototype,增加一個屬性給Object.prototype上,同時也會反應到Object上。如: 複製代碼 代碼如下:Object.prototype.nameStr="Object Prototype";
Object.prototype.getName=function(){return this.nameStr};
alert(Object.getName());//Object Prototype

Function.prototype與Object.prototype
由於Object.prototype是萬物之根,所以Function.prototype也同時會繼承Object.prototype的所有屬性。如: 複製代碼 代碼如下:Object.prototype.nameStr="Object Prototype";
Object.prototype.getName=function(){return this.nameStr};
alert(Function.prototype.getName());//Object Prototype

Object/Function/String/Number/Boolean/Array與Date
Object/Function/String/Number/Boolean/Array與Date都是函數,函數又繼承於Function.prototype, 所以更改Function.prototype一樣會影響到Object/Function/String/Number/Boolean/Array與Date。如: 複製代碼 代碼如下:Function.prototype.initType='Function Type';
Function.prototype.getType=function(){return this.initType};
//alert(Object.getType());//Function Type
//alert(Date.getType());//Function Type
//alert(Number.getType());//Function Type
//alert(String.getType());//Function Type
//alert(Boolean.getType());//Function Type
alert(Array.getType());//Function Type

同樣Function.prototype也會把所受Object.prototype的影響,傳遞給它的下一層級。如: 複製代碼 代碼如下:Object.prototype.nameStr="Object Prototype";
Object.prototype.getName=function(){return this.nameStr};
alert(Function.prototype.getName());//Object Prototype
alert(Array.getName());//Object Prototype

複製代碼 代碼如下:alert(Boolean.prototype.getName());//Object Prototype

Array/Array.prototype與Function.prototype/Object.prototype

Array是函數對象,受Function.prototype的影響,而Array.prototype不是函數對象,所不受Function.prototype的影響,但所有對象受Object.prototype的影響,所以Array.prototype也會受Object.prototype的影響。如: 複製代碼 代碼如下:Object.prototype.nameStr="Object Prototype";
Object.prototype.getName=function(){return this.nameStr};
//alert(Function.prototype.getName());//Object Prototype
//alert(Boolean.prototype.getName());//Object Prototype
Function.prototype.initFun=function(){
return 'Function.prototype.initFun';
}
alert(Array.initFun());//Function.prototype.initFun
var arr=['a','b'];
alert(arr.getName());//Object Prototype
alert(arr.initFun());//Error: arr.initFun is not a function
alert(arr.initFun);//undefined

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.