通過{}.toString 檢測類型的問題
老師在類型檢測小結(jié)的ppt中,總結(jié)了“通過{}.toString拿到,適合內(nèi)置對象和基元類型。。。?!?/p>
請問:?
1、這里說的基元類型是指javascript的基本數(shù)據(jù)類型嗎?如果不是,那是指的什么?
2、
Object.prototype.toString.apply('abc')??//?返回"[object?String]" Object.prototype.toString.apply(new?String('abc'))//返回"[object?String]"
上面兩種情況下都返回的同樣的結(jié)果,可是一個是 string類型的字符串,一個是String對象,兩者的類型不一樣。是否這種判斷數(shù)據(jù)類型的方法不適合基本的數(shù)據(jù)類型?
希望老師能夠幫忙解答,有什么不對的希望老師能夠指出。謝謝
2015-12-28
是的。e.g.?
var str = "helloworld";
Object.prototype.toString.apply(str);
return:?"[object String]"
明顯是創(chuàng)建了一個臨時的包裝對象,new String(str);
具體參見?JavaScriot權(quán)威指南 3.6節(jié)包裝對象(Wrapper Objects)
比較懶就不敲字啦 :)
2016-04-30
Object.prototype.toString.call(this);????這里的參數(shù)是一個對象,所以將‘a(chǎn)bc’轉(zhuǎn)換為String對象了。
2015-10-22
我的理解是:調(diào)用apply的時候,由于stirng類型沒有這個方法,所以就將字符串轉(zhuǎn)換成了它對應(yīng)的包裝類,進而調(diào)用了String對象上的prototype.toString方法。
2015-10-21
個人理解,錯了望原諒:其實我覺得它返回的都是Object是因為apply的作用域是在Object中,你判斷一個字符串感覺就是“字符串在對象里,你要調(diào)用字符串,字符串指針指向Object,所以都是同樣的結(jié)果?!?/p>