<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        理解JavaScript中的原型prototype

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:30:35
        文檔

        理解JavaScript中的原型prototype

        理解JavaScript中的原型prototype:JS中的phototype是JS中比較難理解的一個(gè)部分。javascript的方法可以分為三類:類方法,對(duì)象方法,原型方法。例子:function People(name) { this.name=name; //對(duì)象方法 this.Introduce=function(){ alert("My nam
        推薦度:
        導(dǎo)讀理解JavaScript中的原型prototype:JS中的phototype是JS中比較難理解的一個(gè)部分。javascript的方法可以分為三類:類方法,對(duì)象方法,原型方法。例子:function People(name) { this.name=name; //對(duì)象方法 this.Introduce=function(){ alert("My nam

        JS中的phototype是JS中比較難理解的一個(gè)部分。javascript的方法可以分為三類:類方法,對(duì)象方法,原型方法。

        例子:

        function People(name)
        {
         this.name=name;
         //對(duì)象方法
         this.Introduce=function(){
         alert("My name is "+this.name);
         }
        }
        //類方法
        People.Run=function(){
         alert("I can run");
        }
        //原型方法
        People.prototype.IntroduceChinese=function(){
         alert("我的名字是"+this.name);
        }
        //測(cè)試
        var p1=new People("Windking");
        p1.Introduce();
        People.Run();
        p1.IntroduceChinese();

        obj1.func.call(obj)方法意思是將obj看成obj1,調(diào)用func方法。

        prototype是什么含義

        javascript中的每個(gè)對(duì)象都有prototype屬性,Javascript中對(duì)象的prototype屬性的解釋是:返回對(duì)象類型原型的引用。

        ?

        A.prototype = new B();

        理解prototype不應(yīng)把它和繼承混淆。A的prototype為B的一個(gè)實(shí)例,可以理解A將B中的方法和屬性全部克隆了一遍。A能使用B的方法和屬性。這里強(qiáng)調(diào)的是克隆而不是繼承。可以出現(xiàn)這種情況:A的prototype是B的實(shí)例,同時(shí)B的prototype也是A的實(shí)例。

        先看一個(gè)實(shí)驗(yàn)的例子:

        function baseClass()
        {
         this.showMsg = function()
         {
         alert("baseClass::showMsg"); 
         }
        }
        function extendClass()
        {
         
        }
        extendClass.prototype = new baseClass();
        instance = new extendClass();
        instance.showMsg(); // 顯示baseClass::showMsg

        我們首先定義了baseClass類,然后我們要定義extentClass,但是我們打算以baseClass的一個(gè)實(shí)例為原型,來(lái)克隆的extendClass也同時(shí)包含showMsg這個(gè)對(duì)象方法。extendClass.prototype = new baseClass()就可以閱讀為:extendClass是以baseClass的一個(gè)實(shí)例為原型克隆創(chuàng)建的。

        那么就會(huì)有一個(gè)問(wèn)題,如果extendClass中本身包含有一個(gè)與baseClass的方法同名的方法會(huì)怎么樣?

        下面是擴(kuò)展實(shí)驗(yàn)2:

        function baseClass()
        {
         this.showMsg = function()
         {
         alert("baseClass::showMsg"); 
         }
        }
        function extendClass()
        {
         this.showMsg =function ()
         {
         alert("extendClass::showMsg");
         }
        }
        extendClass.prototype = new baseClass();
        instance = new extendClass();
        instance.showMsg();//顯示extendClass::showMsg

        實(shí)驗(yàn)證明:函數(shù)運(yùn)行時(shí)會(huì)先去本體的函數(shù)中去找,如果找到則運(yùn)行,找不到則去prototype中尋找函數(shù)。或者可以理解為prototype不會(huì)克隆同名函數(shù)。

        那么又會(huì)有一個(gè)新的問(wèn)題:如果我想使用extendClass的一個(gè)實(shí)例instance調(diào)用baseClass的對(duì)象方法showMsg怎么辦?

        答案是可以使用call:

        extendClass.prototype = new baseClass();
        instance = new extendClass();
        var baseinstance = new baseClass();
        baseinstance.showMsg.call(instance);//顯示baseClass::showMsg

        這里的baseinstance.showMsg.call(instance);閱讀為"將instance當(dāng)做baseinstance來(lái)調(diào)用,調(diào)用它的對(duì)象方法showMsg"。好了,這里可能有人會(huì)問(wèn),為什么不用baseClass.showMsg.call(instance);這就是對(duì)象方法和類方法的區(qū)別,我們想調(diào)用的是baseClass的對(duì)象方法

        最后,下面這個(gè)代碼如果理解清晰,那么這篇文章說(shuō)的就已經(jīng)理解了:

        <script type="text/javascript">
        function baseClass()
        {
         this.showMsg = function()
         {
         alert("baseClass::showMsg"); 
         }
         
         this.baseShowMsg = function()
         {
         alert("baseClass::baseShowMsg");
         }
        }
        baseClass.showMsg = function()
        {
         alert("baseClass::showMsg static");
        }
        function extendClass()
        {
         this.showMsg =function ()
         {
         alert("extendClass::showMsg");
         }
        }
        extendClass.showMsg = function()
        {
         alert("extendClass::showMsg static")
        }
        extendClass.prototype = new baseClass();
        instance = new extendClass();
        instance.showMsg(); //顯示extendClass::showMsg
        instance.baseShowMsg(); //顯示baseClass::baseShowMsg
        instance.showMsg(); //顯示extendClass::showMsg
        baseClass.showMsg.call(instance);//顯示baseClass::showMsg static
        var baseinstance = new baseClass();
        baseinstance.showMsg.call(instance);//顯示baseClass::showMsg
        </script>

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        理解JavaScript中的原型prototype

        理解JavaScript中的原型prototype:JS中的phototype是JS中比較難理解的一個(gè)部分。javascript的方法可以分為三類:類方法,對(duì)象方法,原型方法。例子:function People(name) { this.name=name; //對(duì)象方法 this.Introduce=function(){ alert("My nam
        推薦度:
        標(biāo)簽: js 理解 javascript
        • 熱門(mén)焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門(mén)推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲欧洲校园自拍都市| 久久亚洲中文字幕精品一区四 | 又爽又高潮的BB视频免费看| 日韩亚洲国产综合高清| 嫖丰满老熟妇AAAA片免费看| 亚洲导航深夜福利| 在线观看H网址免费入口| 亚洲精品电影在线| 国产在线a免费观看| 亚洲国产精品ⅴa在线观看| 精品国产一区二区三区免费看| 四虎亚洲精品高清在线观看| 永久免费观看的毛片的网站| 麻豆安全免费网址入口| 最新亚洲成av人免费看| 久久国产乱子伦精品免费强| 日韩精品亚洲人成在线观看| 91成人免费观看网站| 亚洲精品无码永久在线观看男男| 国产乱弄免费视频| 99久久免费国产精品热| 亚洲高清美女一区二区三区| 国产免费久久精品99re丫y| 亚洲综合色一区二区三区| 免费a级毛片大学生免费观看| 中国性猛交xxxxx免费看| 91亚洲导航深夜福利| 免费无码又爽又高潮视频 | 女人18毛片水真多免费看| 老牛精品亚洲成av人片| 国产亚洲大尺度无码无码专线| 小日子的在线观看免费| 亚洲色欲色欱wwW在线| 久久亚洲中文字幕精品一区四| 99久久久国产精品免费牛牛四川 | 成年美女黄网站色大免费视频| 色多多免费视频观看区一区| 亚洲AV无码成人精品区在线观看 | 97人妻无码一区二区精品免费| 99亚洲精品卡2卡三卡4卡2卡| 亚洲国产精品特色大片观看完整版|