摘要:答案核心對(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
摘要:圖示如下而對(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 =...
摘要:第一個(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://...
摘要:但是當(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í)候,是通過引用傳入...
摘要:具有相同的所有構(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...
摘要:簡(jiǎn)單說中的與方法我們一句一句的看結(jié)果是邏輯非,會(huì)將操作數(shù)的布爾值求反,而就是類型轉(zhuǎn)換,將對(duì)應(yīng)的類型轉(zhuǎn)換為型所以我們看一看,一次求反返回的就是,再求反返回的就是。原始值不可變更的值,包括布爾值數(shù)字和字符串。 說明 直接說出問題 !![] == true //結(jié)果是true [] == true //結(jié)果是false ![] == [] //結(jié)果是true 為什么會(huì)出現(xiàn)這種情...
閱讀 3650·2021-11-19 09:40
閱讀 3103·2019-08-30 15:54
閱讀 2321·2019-08-30 15:44
閱讀 3202·2019-08-29 15:35
閱讀 3340·2019-08-29 12:22
閱讀 2869·2019-08-28 18:01
閱讀 3153·2019-08-26 13:54
閱讀 912·2019-08-26 12:24