<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 1、原型對象 ## 1.1、沒有原型對象的情況 在實例化得到一個對象的時候,會為這個對象分配一個原型對象。 代碼:一個構造函數,實例化得到三個對象。 ![](https://img.kancloud.cn/7f/2f/7f2fb680ad9740a6adcd68198a94e4d0_498x371.png) 在內存中,會分別為每個對象開辟新的空間。發現每個對象中的say和cook都一樣,這樣的話,會占用大量的內存。解決辦法就是使用原型對象。 ## 1.2、原型對象 在實例化得到對象的時候,系統會為構造器創建一個對象,該對象會保存構造器的每個實例對象的相同內容,這個對象就是原型對象。 ![](https://img.kancloud.cn/31/6a/316a69aa9b5f2369dee39c971781f29a_735x334.png) 原型對象不能單獨存在,肯定要和構造函數產生關系才行。原型對象和構造函數的關系如下: ![](https://img.kancloud.cn/58/40/58407dc95b019553e729406be206c4c4_402x99.png) ![](https://img.kancloud.cn/c4/8c/c48c24ff4054e1c3d38b61e9f345c8e0_1033x301.png) ## 1.3、使用構造函數和原型對象共同來定義“類” 有了原型對象,再定義構造函數的時候,就可以將每個對象獨有的內容放到構造函數中,將每個對象相同的內容都放到原型對象上,具體看下面的代碼: ![](https://img.kancloud.cn/35/49/3549c1ffbbd475cde77ded10610758d3_754x514.png) 這樣做的目的是既能區分開每個實例對象,又能節省內存。 ## 1.4、原型對象、實例對象、構造函數的關系 ![](https://img.kancloud.cn/67/b3/67b3bea64348f52c0bd22c9bf5453939_407x233.png) 測試: ![](https://img.kancloud.cn/e1/7a/e17af9a8559da445cf269d4b0aeed491_657x217.png) constructor:真實作用是找對象(實例對象、原型對象)的構造函數的。 ![](https://img.kancloud.cn/27/b8/27b87c8b313fd0cadf7a6ec6b0bbf092_669x284.png) ![](https://img.kancloud.cn/d4/a1/d4a1b1ef11b77a7938b570ee366cff26_756x259.png) # 2、原型鏈 ![](https://img.kancloud.cn/ac/5e/ac5edab0251666bc97a7b2765d41e7b0_943x344.png) 找一個對象的成員時: 優先從對象自身查找; 然后從對象的構造函數中查找; 然后從構造函數的原型對象上查找; 然后從原型對象的構造函數中查找 …. 這種查找的方式就是原型鏈。 一個問題:這樣一直向上查找,最頂層是什么呢? 最頂層是內置的Object對象。Object是所有對象的默認的原型對象。 # 3、應用--擴展內置對象 比如在使用內置的String對象的時候: ``` var s = new String('hello world'); s.length; s.substr(1,3); s.indexOf('h'); ``` 實例化String之后,就可以調用String對象中的各個方法了。 下面模擬內置的String構造函數的寫法: ![](https://img.kancloud.cn/2e/a5/2ea55fce6635444060e8177c54eb81e4_565x399.png) 擴展內置對象,為String加入ucfirst函數(功能是將字符串的首字母大寫): ![](https://img.kancloud.cn/51/4e/514eb67324ab42bcb002c6c62e947ce6_706x379.png) # 4、應用--為DOM對象添加方法 為所有的dom對象添加一個css方法,因為所有對象的最頂層的原型是Object,所以在Object的原型對象中添加一個css方法即可。 ![](https://img.kancloud.cn/65/7d/657d596eb0f6d836cfc55933f7f60a2d_677x243.png) 有因為this表示調用css的每個對象,如果css方法中返回this將會形成鏈式的調用方式。 ![](https://img.kancloud.cn/92/3a/923a3f1e8194d69a1bee5a707271b9a2_889x421.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看