成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

由一個(gè)問題引發(fā)關(guān)于對(duì)象和對(duì)象子類型的思考

hatlonely / 1965人閱讀

摘要:答案核心對(duì)象和對(duì)象子類型先看一段解釋第一個(gè)代表對(duì)象。第二個(gè)代表對(duì)象子類型。那么問題來了,什么是不嚴(yán)謹(jǐn)?shù)恼f,中的所有,都是由對(duì)象衍生出來的對(duì)象子類型包括,和。

問題:
如題

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

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

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

答案:
核心:對(duì)象對(duì)象子類型

先看一段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...

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

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

不嚴(yán)謹(jǐn)?shù)恼f,Javascript中的所有,都是由custom object(對(duì)象)衍生出來的type(對(duì)象子類型).

JavaScript包括DOM,BOM和EcmaScript。

DOM的div,本質(zhì)上也是一個(gè)custom object,type是HTMLDivElement。
BOM的navigator,本質(zhì)上也是一個(gè)custom object,type是Navigator。
EcmaScript的arguments,本質(zhì)上也是一個(gè)custom object,type是Arguments。

再說說常見的簡(jiǎn)單和復(fù)雜數(shù)據(jù)類型

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

用toString()時(shí),同樣也會(huì)返回

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

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

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

這時(shí)候可能比較暈了,那么再來想想什么是簡(jiǎn)單數(shù)據(jù)類型,什么是復(fù)雜數(shù)據(jù)類型。

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

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

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

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

也不知道對(duì)不對(duì),反正我把所有已知都聯(lián)系起來了,輕噴

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89116.html

相關(guān)文章

  • 一個(gè)關(guān)于對(duì)象引用bug引發(fā)對(duì)于引用類型及數(shù)組簡(jiǎn)單思考

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

    lijinke666 評(píng)論0 收藏0
  • 「Metaspace容量不足觸發(fā)CMS GC」從而引發(fā)思考

    摘要:第一個(gè)大陡坡是應(yīng)用發(fā)布,老年代內(nèi)存占比下降,很正常。但此時(shí)老年代內(nèi)存使用占比。因?yàn)楹笃诓⒉粫?huì)引發(fā)??梢钥闯?,由于到達(dá)時(shí)候,觸發(fā)了一次和一次。但觸發(fā)時(shí),占比并沒用明顯的規(guī)律。得出,擴(kuò)容導(dǎo)致這個(gè)說法,其實(shí)是不準(zhǔn)確的。 轉(zhuǎn)載請(qǐng)注明原文鏈接:https://www.jianshu.com/p/468... 某天早上,毛老師在群里問「cat 上怎么看 gc」。 showImg(https://...

    StonePanda 評(píng)論0 收藏0
  • vue 組件修改props引用類型參數(shù)引發(fā)思考

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

    周國輝 評(píng)論0 收藏0
  • Jquery創(chuàng)建對(duì)象引發(fā)思考

    摘要:具有相同的所有構(gòu)造器的對(duì)象都具有相同的類型最后中的中有對(duì)于使用函數(shù)名這樣的方式創(chuàng)建對(duì)象有無是一樣的。對(duì)于使用函數(shù)名創(chuàng)建對(duì)象和無返回值一樣因?yàn)槟J(rèn)就會(huì)返回。 讀到j(luò)query源碼時(shí)我有以下疑惑 問題1 Jquery 中創(chuàng)建對(duì)象的奧秘問題2 JavaScript中this的指向問題問題3 return this 的作用問題4 instanceof / 對(duì)象和類之間的關(guān)系 //代碼1(Jq...

    Harpsichord1207 評(píng)論0 收藏0
  • 簡(jiǎn)單說 !![]==true 與 []==true 引發(fā)思考

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

    lbool 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<