• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    關于JS中prototype的理解_javascript技巧

    來源:懂視網 責編:小采 時間:2020-11-27 21:43:21
    文檔

    關于JS中prototype的理解_javascript技巧

    關于JS中prototype的理解_javascript技巧:每一個構造函數(shù)都有一個屬性叫做原型(prototype)。這個屬性非常有用:為一個特定類聲明通用的變量或者函數(shù)。 prototype的定義 你不需要顯式地聲明一個prototype屬性,因為在每一個構造函數(shù)中都有它的存在 本文基于下面幾個知識點: 1 原型法設計模式
    推薦度:
    導讀關于JS中prototype的理解_javascript技巧:每一個構造函數(shù)都有一個屬性叫做原型(prototype)。這個屬性非常有用:為一個特定類聲明通用的變量或者函數(shù)。 prototype的定義 你不需要顯式地聲明一個prototype屬性,因為在每一個構造函數(shù)中都有它的存在 本文基于下面幾個知識點: 1 原型法設計模式

    每一個構造函數(shù)都有一個屬性叫做原型(prototype)。這個屬性非常有用:為一個特定類聲明通用的變量或者函數(shù)。

    prototype的定義

    你不需要顯式地聲明一個prototype屬性,因為在每一個構造函數(shù)中都有它的存在

    本文基于下面幾個知識點:

    1 原型法設計模式

    在.Net中可以使用clone()來實現(xiàn)原型法

    原型法的主要思想是,現(xiàn)在有1個類A,我想要創(chuàng)建一個類B,這個類是以A為原型的,并且能進行擴展。我們稱B的原型為A。

    2 javascript的方法可以分為三類:

    a 類方法

    b 對象方法

    c 原型方法

    例子:

    3 obj1.func.call(obj)方法

    意思是將obj看成obj1,調用func方法

    好了,下面一個一個問題解決:

    prototype是什么含義?

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

    A.prototype = new B();

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

    先看一個實驗的例子:

    我們首先定義了baseClass類,然后我們要定義extentClass,但是我們打算以baseClass的一個實例為原型,來克隆的extendClass也同時包含showMsg這個對象方法。

    extendClass.prototype = new baseClass()就可以閱讀為:extendClass是以baseClass的一個實例為原型克隆創(chuàng)建的。

    那么就會有一個問題,如果extendClass中本身包含有一個與baseClass的方法同名的方法會怎么樣?

    下面是擴展實驗2:

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

    那么又會有一個新的問題:
    如果我想使用extendClass的一個實例instance調用baseClass的對象方法showMsg怎么辦?

    答案是可以使用call:

    這里的baseinstance.showMsg.call(instance);閱讀為“將instance當做baseinstance來調用,調用它的對象方法showMsg”
    好了,這里可能有人會問,為什么不用baseClass.showMsg.call(instance);

    這就是對象方法和類方法的區(qū)別,我們想調用的是baseClass的對象方法

    最后,下面這個代碼如果理解清晰,那么這篇文章說的就已經理解了:

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

    文檔

    關于JS中prototype的理解_javascript技巧

    關于JS中prototype的理解_javascript技巧:每一個構造函數(shù)都有一個屬性叫做原型(prototype)。這個屬性非常有用:為一個特定類聲明通用的變量或者函數(shù)。 prototype的定義 你不需要顯式地聲明一個prototype屬性,因為在每一個構造函數(shù)中都有它的存在 本文基于下面幾個知識點: 1 原型法設計模式
    推薦度:
    標簽: js 理解 javascript
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美国产成人久久精品| 国产中老年妇女精品| 国产精品熟女一区二区| 免费精品精品国产欧美在线| 最新亚洲精品国自产在线观看| 人人妻人人澡人人爽人人精品电影| 国产微拍精品一区二区| 久久精品国产福利国产秒| 精品人妻无码一区二区色欲产成人 | 2021年精品国产福利在线| 精品亚洲成a人片在线观看| 午夜亚洲av永久无码精品| 久久久久99精品成人片三人毛片| 国产精品毛片无码| 99久久伊人精品综合观看| 久久亚洲国产精品一区二区 | 久久久久久亚洲精品成人 | 久久国产精品成人免费 | 99香蕉国产精品偷在线观看| 日韩精品乱码AV一区二区 | 在线观看国产精品普通话对白精品| 久久99精品久久久久久不卡| 国产精品无码素人福利| 国产成人精品一区二区三区| 99视频在线精品国自产拍亚瑟| 777被窝午夜精品影院| 99久久国产综合精品网成人影院 | 久久99国产精品久久99果冻传媒| avtt天堂网久久精品| 国产在线精品一区二区中文| 国产国拍亚洲精品mv在线观看| 国产精品视频二区不卡| 国产精品视频二区不卡| 99国产精品久久| 国产成人精品日本亚洲网址| 国产精品999| 久久亚洲国产欧洲精品一| 四虎国产精品永久地址49| 91精品国产高清久久久久久国产嫩草| 88国产精品无码一区二区三区| 93精91精品国产综合久久香蕉|