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

資訊專欄INFORMATION COLUMN

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

hatlonely / 1962人閱讀

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

問題:
如題

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?

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

JavaScript包括DOM,BOM和EcmaScript。

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

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

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],因?yàn)?foo"和String("foo")是等價的,注意,此處沒有new。

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

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

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

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89116.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    lbool 評論0 收藏0

發(fā)表評論

0條評論

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