国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

由一個問題引發關于對象和對象子類型的思考

hatlonely / 1957人閱讀

摘要:答案核心對象和對象子類型先看一段解釋第一個代表對象。第二個代表對象子類型。那么問題來了,什么是不嚴謹的說,中的所有,都是由對象衍生出來的對象子類型包括,和。

問題:
如題

var obj=new Object();
Object.prototype.toString.call(obj);// "[object Object]"

var arr=new Array();
Object.prototype.toString.call(arr);// "[object Array]"

如此類推,輸出的"[object Object]"這些字符串,第一個object代表的是什么?第二個Object代表的又是什么?開頭還是大寫。

答案:
核心:對象對象子類型

先看一段MDN解釋:

If this method is not overridden in a custom object, toString() returns "[object type]", where type is the object type.
var o = new Object();
o.toString(); // returns [object Object]

https://developer.mozilla.org...

第一個object代表custom object(對象)。
第二個Object代表type(對象子類型)。

那么問題來了,什么是custom object?

不嚴謹的說,Javascript中的所有,都是由custom object(對象)衍生出來的type(對象子類型).

JavaScript包括DOM,BOM和EcmaScript。

DOM的div,本質上也是一個custom object,type是HTMLDivElement。
BOM的navigator,本質上也是一個custom object,type是Navigator。
EcmaScript的arguments,本質上也是一個custom object,type是Arguments。

再說說常見的簡單和復雜數據類型

String,Number,Boolean,null,undefined
Array,Object,Function,RegExp,Data,Math...

用toString()時,同樣也會返回

[object String] [object Number] [object Boolean]......

不想寫了,都一樣,后面都是各自的type(對象子類型)。

至于為什么Object.prototype.toString.call("foo")同樣會返回[obejct String],因為"foo"和String("foo")是等價的,注意,此處沒有new。

這時候可能比較暈了,那么再來想想什么是簡單數據類型,什么是復雜數據類型。

我的理解是,所有的數據類型都是由custom object(對象)衍生出來的,所以他們都是對type(對象子類型)。

只不過簡單數據類型沒有繼承那些原型鏈上的方法,這樣更加輕量;若繼承的話,需要使用new操作符,就徹底成一個復雜數據類型了。

幾乎所有的對象子類型都會繼承Obejct,不過我想Object.create(null)是所有其他對象子類型的最原始狀態

至于Object是怎么來的,我想這是個迷了,等后面我知道了再來補充答案

也不知道對不對,反正我把所有已知都聯系起來了,輕噴

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89116.html

相關文章

  • 一個關于對象引用bug引發對于引用類型及數組簡單思考

    摘要:圖示如下而對于引用類型的復制可不是這樣這個復制只是將的引用賦值給,二者是屬于同一個引用,訪問的都是堆內存中的同一個對象,任何一個該引用的變量發生變化,會對其余使用該引用的變量也發生變化。 這兩天自己在寫代碼的時候,出現一個BUG,代碼如下: class Car { constructor(carId) { this.position =...

    lijinke666 評論0 收藏0
  • 「Metaspace容量不足觸發CMS GC」從而引發思考

    摘要:第一個大陡坡是應用發布,老年代內存占比下降,很正常。但此時老年代內存使用占比。因為后期并不會引發。可以看出,由于到達時候,觸發了一次和一次。但觸發時,占比并沒用明顯的規律。得出,擴容導致這個說法,其實是不準確的。 轉載請注明原文鏈接:https://www.jianshu.com/p/468... 某天早上,毛老師在群里問「cat 上怎么看 gc」。 showImg(https://...

    StonePanda 評論0 收藏0
  • vue 組件修改props引用類型參數引發思考

    摘要:但是當傳遞的參數為對象或者數組的時候,是通過引用傳入的,所以對于一個引用類型的來說,在子組件中改變這個參數本身將會影響到父組件的數據狀態。 問題 父級組件與子組件的通信一般都是通過props來實現的,因為數據流向的單一才能保證數據變化的可追蹤性,在vue中props遵循的是單向數據流,原則上子組件修改props是不被允許的。但是當props傳遞的參數為對象或者數組的時候,是通過引用傳入...

    周國輝 評論0 收藏0
  • Jquery創建對象引發思考

    摘要:具有相同的所有構造器的對象都具有相同的類型最后中的中有對于使用函數名這樣的方式創建對象有無是一樣的。對于使用函數名創建對象和無返回值一樣因為默認就會返回。 讀到jquery源碼時我有以下疑惑 問題1 Jquery 中創建對象的奧秘問題2 JavaScript中this的指向問題問題3 return this 的作用問題4 instanceof / 對象和類之間的關系 //代碼1(Jq...

    Harpsichord1207 評論0 收藏0
  • 簡單說 !![]==true 與 []==true 引發思考

    摘要:簡單說中的與方法我們一句一句的看結果是邏輯非,會將操作數的布爾值求反,而就是類型轉換,將對應的類型轉換為型所以我們看一看,一次求反返回的就是,再求反返回的就是。原始值不可變更的值,包括布爾值數字和字符串。 說明 直接說出問題 !![] == true //結果是true [] == true //結果是false ![] == [] //結果是true 為什么會出現這種情...

    lbool 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<