學過原型以後關於物件方法的思考
阿新 • • 發佈:2018-12-06
因為在沒學過原型以前,理解的是 Object.way() 訪問的所有方法都是一個物件自己所具有的方法,所有對於當操作一個this時候的疑問還沒有,但是在學過了原型以後,發現一個物件通過點號訪問的方法很有可能不是他自己的,那麼類似於toString這類操作this的方法又怎麼回事呢?
首先,我們知道Number和Object的物件都有toString屬性,當我們使用Number.toString()方法時答案無疑惑的是function Number() {....},因為它本身就有toString這個方法,這裡當然呼叫的就是它本身已經具有的方法,而不是順著原型鏈然後一直往上面去查詢,
然後當我們把Number.prototype設定為一個空物件時
Number.prototype = {};
那麼這時候Number的原型裡面已經沒有這個toString方法了,那麼這時候就要去找到Object的原型,並呼叫到Object中的原型的方法,注意到這裡的呼叫的不是自己的原型中的方法然而卻依然列印的是 function Number() {....} 而不是 function object() {...} ,所以這個 way 是的是不重要的,誰呼叫的他,那麼這個 way 中的 this 就是誰。
其實在寫這個的中間我就已經發現了我寫的存在的問題,不過依然是寫了下來,僅供自己參考一下