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