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