<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                既typeof之后的另一位老朋友! prototype也是我們的老朋友,即使不了解的人,也應該都聽過它的大名。如果它還是您的新朋友,我估計您也是javascript的新朋友。 在咱們的第一節([深入理解javascript原型和閉包(1)——一切都是對象](http://www.cnblogs.com/wangfupeng1988/p/3977987.html))中說道,函數也是一種對象。他也是屬性的集合,你也可以對函數進行自定義屬性。 不用等咱們去試驗,javascript自己就先做了表率,人家就默認的給函數一個屬性——prototype。對,每個函數都有一個屬性叫做prototype。 這個prototype的屬性值是一個對象(屬性的集合,再次強調!),默認的只有一個叫做constructor的屬性,指向這個函數本身。 ![](http://images.cnitblog.com/blog/138012/201409/172121182841896.png) 如上圖,SuperType是是一個函數,右側的方框就是它的原型。 原型既然作為對象,屬性的集合,不可能就只弄個constructor來玩玩,肯定可以自定義的增加許多屬性。例如這位Object大哥,人家的prototype里面,就有好幾個其他屬性。 ![](http://images.cnitblog.com/blog/138012/201409/172130097842386.png) 咦,有些方法怎么似曾相似? 對!別著急,之后會讓你知道他們為何似曾相識。 接著往下說,你也可以在自己自定義的方法的prototype中新增自己的屬性 function Fn() { } Fn.prototype.name = '王福朋'; Fn.prototype.getYear = function () { return 1988; }; 看到沒有,這樣就變成了 ![](http://images.cnitblog.com/blog/138012/201409/172138591437263.png) 沒問題! 但是,這樣做有何用呢? ——?解決這個問題,咱們還是先說說jQuery吧。 var $div = $('div'); $div.attr('myName', '王福朋'); 以上代碼中,$('div')返回的是一個對象,對象——被函數創建的。假設創建這一對象的函數是 myjQuery。它其實是這樣實現的。 myjQuery.prototype.attr = function () { //…… }; $('div') = new myjQuery(); 不知道大家有沒有看明白。 如果用咱們自己的代碼來演示,就是這樣 ![復制代碼](http://common.cnblogs.com/images/copycode.gif) function Fn() { } Fn.prototype.name = '王福朋'; Fn.prototype.getYear = function () { return 1988; }; var fn = new Fn(); console.log(fn.name); console.log(fn.getYear()); ![復制代碼](http://common.cnblogs.com/images/copycode.gif) 即,Fn是一個函數,fn對象是從Fn函數new出來的,這樣fn對象就可以調用Fn.prototype中的屬性。 因為每個對象都有一個隱藏的屬性——“__proto__”,這個屬性引用了創建這個對象的函數的prototype。即:fn.__proto__ === Fn.prototype 這里的"__proto__"成為“隱式原型”,下回繼續分解。
                  <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>

                              哎呀哎呀视频在线观看