<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          這樣學原型鏈,就是簡單了

          共 1280字,需瀏覽 3分鐘

           ·

          2021-01-31 02:13

          面試官:請你講講原型鏈

          在前面我們已經陸陸續(xù)續(xù)講了構造函數,實例,原型,那么今天我們就來講講原型鏈。

          之前我們講過,原型其實也會一個對象,既然是對象,我們也可以用最原始的方式來創(chuàng)建他:

          var?obj?=?new?Object()
          obj.name?=?"人生代碼"
          console.log(obj.name)?//?人生代碼

          其實原型對象就是通過 Object 創(chuàng)建的,之前講過實例的 proto 指向構造函數的 prototype,可以理解成,Object.prototype 是所有對象的根對象,所以我們可以更新以下:

          原型鏈

          每一個對象都有原型,通過 proto 指向上一個原型,最終指向 null,這條鏈存在著終點,就是 Object.prototype 的原型是 null。

          補充,易錯點

          1.constructor

          首先是 constructor 屬性,我們看個例子:

          function?Person()?{}
          var?person?=?new?Person();
          console.log(person.constructor?===?Person);?//?true

          當獲取 person.constructor 時,其實 person 中并沒有 constructor 屬性,當不能讀取到 constructor 屬性時,會從 person 的原型也就是 Person.prototype 中讀取,正好原型中有該屬性,所以:

          person.constructor?===?Person.prototype.constructor

          2.proto

          其次是 proto ,絕大部分瀏覽器都支持這個非標準的方法訪問原型,然而它并不存在于 Person.prototype 中,實際上,它是來自于 Object.prototype ,與其說是一個屬性,不如說是一個 getter/setter,當使用 obj.proto 時,可以理解成返回了 Object.getPrototypeOf(obj)。

          3.真的是繼承嗎?

          最后是關于繼承,前面我們講到“每一個對象都會從原型‘繼承’屬性”,實際上,繼承是一個十分具有迷惑性的說法,引用《你不知道的JavaScript》中的話,就是:

          繼承意味著復制操作,然而 JavaScript 默認并不會復制對象的屬性,相反,JavaScript 只是在兩個對象之間創(chuàng)建一個關聯,這樣,一個對象就可以通過委托訪問另一個對象的屬性和函數,所以與其叫繼承,委托的說法反而更準確些。

          總結

          • 使用new生成實例的函數就是構造函數,直接調用的就是普通函數;
          • 每個對象都擁有一個原型對象;
          • 每個引用類型的隱式原型都指向它的構造函數的顯式原型;
          • Object.prototype 是所有對象的根對象;
          • 原型鏈存在終點,不會無限查找下去;



          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久网国产 | 欧美逼首页 | 一级a一级a免费观看视频Al明星 | 久久中文综合 | 情色五月天丁香成人 |