javascript prototype原型詳解(比較基礎(chǔ))
javascript的prototype原型簡(jiǎn)單介紹:
prototype原型是javascript中特別重要的概念,屬于必須要掌握,如果沒(méi)有良好的掌握的話,進(jìn)一步用好或者學(xué)好js基本是不可能的實(shí)現(xiàn)的事情,并且此概念稍有難度,可能對(duì)于初次接觸的朋友來(lái)說(shuō)有點(diǎn)困難,下面就通過(guò)代碼實(shí)例簡(jiǎn)單介紹一下prototype原型的用法。
一.基本概念:
每一個(gè)函數(shù)都具有一個(gè)prototype屬性。
此屬性是一個(gè)指針,能夠指向一個(gè)對(duì)象,而此對(duì)象將會(huì)被由構(gòu)造函數(shù)創(chuàng)建的對(duì)象實(shí)例所共享,也就是會(huì)繼承此對(duì)象。
總結(jié):prototype所指向的對(duì)象是被構(gòu)造函數(shù)所創(chuàng)建的對(duì)象實(shí)例所共同共享的。
創(chuàng)建的對(duì)象實(shí)例有一個(gè)內(nèi)部屬性[[Prototype]],它是一個(gè)指針,指向構(gòu)造函數(shù)原型(prototype)指向的對(duì)象。
先看一段代碼:
<script> function antzone(name,age){ this.webname=name; this.age=age; } antzone.prototype.getName=function(){ return this.webname; } var oantzone=new antzone("腳本之家",10); console.log(oantzone.getName()); </script>
效果圖:
圖示如下:
上面圖片基本說(shuō)明了prototype的作用。
二.代碼實(shí)例:
實(shí)例一:
function antzone(name,age){ this.webname=name; this.age=age; } var obj={ address:"江蘇省徐州" } var oantzone=new antzone("腳本之家",10); antzone.prototype=obj; console.log(oantzone.address);
看以上代碼,很多朋友可能以為輸出值是"江蘇省徐州",但是實(shí)際輸出內(nèi)容是undefined,這是因?yàn)樵谑褂脴?gòu)造函數(shù)創(chuàng)建對(duì)象oantzone的時(shí)候,oantzone對(duì)象內(nèi)部屬性[[Prototype]]將會(huì)指向antzone()構(gòu)造函數(shù)的原型prototype所指向的對(duì)象,而后來(lái)antzone.prototype=obj是重置構(gòu)造函數(shù)的原型,而oantzone的內(nèi)置屬性[[Prototype]]指向依然是原來(lái)的對(duì)象,自然oantzone.address是undefined。
實(shí)例二:
<script> function antzone(name,age){ this.webname=name; this.age=age; } var obj={ address:"江蘇省徐州" } antzone.prototype=obj; var oantzone=new antzone("腳本之家",10); console.log(oantzone.webname+oantzone.address); </script>
此代碼和上一段代碼的唯一不同,就是第八行和第九行進(jìn)行了一下交換,這樣就可以輸出"江蘇省徐州",這個(gè)就不難理解了,因?yàn)閷?duì)象實(shí)例是在重置原型以后創(chuàng)建的。
實(shí)例三:
function antzone(name,age){ this.webname=name; this.age=age; } var obj={ address:"江蘇省徐州" } antzone.prototype.add=obj; var oantzone=new antzone("腳本之家",10); console.log(oantzone.add.address);
以上代碼只是修改對(duì)象原型,而不是重置對(duì)象原型。
- javascript prototype的深度探索不是原型繼承那么簡(jiǎn)單
- JavaScript為對(duì)象原型prototype添加屬性的兩種方式
- js中使用使用原型(prototype)定義方法的好處詳解
- javascript prototype 原型鏈
- JS構(gòu)造函數(shù)與原型prototype的區(qū)別介紹
- 跟我學(xué)習(xí)javascript的prototype原型和原型鏈
- javascript prototype原型操作筆記
- js使用原型對(duì)象(prototype)需要注意的地方
- 淺談js構(gòu)造函數(shù)的方法與原型prototype
- [js高手之路]圖解javascript的原型(prototype)對(duì)象,原型鏈實(shí)例
- Javascript 原型和繼承(Prototypes and Inheritance)
- JS原型prototype和__proto__用法實(shí)例分析
相關(guān)文章
JS中構(gòu)造函數(shù)的基本特性與優(yōu)缺點(diǎn)
這篇文章介紹了JS中構(gòu)造函數(shù)的基本特性與優(yōu)缺點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06JavaSacript中charCodeAt()方法的使用詳解
這篇文章主要介紹了JavaSacript中charCodeAt()方法的使用詳解,是JS入門(mén)學(xué)習(xí)中的基本知識(shí),需要的朋友可以參考下2015-06-06js基石系列學(xué)習(xí)之錯(cuò)誤類(lèi)型
這篇文章主要為大家介紹了js基石系列學(xué)習(xí)之錯(cuò)誤類(lèi)型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05JS對(duì)象與JSON互轉(zhuǎn)換、New Function()、 forEach()、DOM事件流等js開(kāi)發(fā)基礎(chǔ)小結(jié)
這篇文章主要介紹了JS對(duì)象與JSON互轉(zhuǎn)換、New Function()、 forEach()、DOM事件流等js開(kāi)發(fā)中基礎(chǔ)的知識(shí)點(diǎn),并通過(guò)舉例詳細(xì)解釋了JavaScript定義的數(shù)據(jù)類(lèi)型、無(wú)第三變量交換值、/和%運(yùn)算符、Memoization技術(shù)、閉包等知識(shí),需要的朋友可以參考下2017-08-08JS中處理時(shí)間之setUTCMinutes()方法的使用
這篇文章主要介紹了JavaScript中處理時(shí)間之setUTCMinutes()方法的使用,是JavaScript入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06JavaScript CSS修改學(xué)習(xí)第一章 查找位置
在這一章我會(huì)給出查找頁(yè)面上的元素位置的代碼。他能幫助你找到真正的位置,假如你改變了窗口的尺寸,然后再次運(yùn)行代碼,也會(huì)告訴你新的位置。2010-02-02