JavaScript 中 new String val 會發生什麼?

時間 2021-06-01 14:06:40

1樓:莫池宇

你的第一次測試使用了new關鍵字,這樣返回的是乙個string包裝物件,但你的console.log輸出為何會加 不得而知,換乙個測試環境試一下。

最後一次測試使用typeof檢測乙個字面量的包裝物件,typeof會返回Object,比如typeof new Number(123),也會返回Object。只有當你直接使用 typeof "i am a string" 或者 typeof 2的時候才會返回string 或者是 number。typeof 的返回值非常讓人困擾,並不能達到區分每個型別的目的,比如typeof null,返回的也是Object。

建議不要使用typeof做型別判斷,而是使用Object.prototype.toString.

call();

Object

.prototype

.toString

.call

(new

String

("i am a string"

));"[object String]"

2樓:

去讀讀ECMA262就行了,new String得到的是個包裝的字串物件。

至於console.log,是實現相關的。一般來說和REPL的輸出方式相近,方便檢視物件的值。

3樓:吳雲閣

所以用 typeof 不靠譜,判斷型別還是要用Object.prototype.toString.call(yourObject).

JavaScript中 ArrayBuffer 物件與 Blob 物件到底有什麼區別?

navegador 我說乙個很表面的,通常來說node比瀏覽器自由,但是瀏覽器的blob 有匹配的createObjectUrl node目前沒有直接的。這個通常看起來沒用,但是如果你不想去改底層的情況下,想實現多執行緒混合非同步分發模型的時候有用 徹底區分真非同步任務和執行緒模擬的非同步任務,然後...

javascript中Function prototype是物件還是函式

大雄 是函式我們先試一下 typeof Function function typeof Function prototype function varfn function typeoffn function typeoffn.prototype object 為什麼就這樣的,這就是因為 Func...

javascript中arguments和形參在改變值時為什麼會同步變化,不應該是值傳遞嗎?

應該是解析的問題吧,arguments 2 a,先是定義了,後是重新賦值,而且這個東西既然可以設計實驗驗證,應該就沒有什麼好糾結的吧。arguments主要是用於實現過載。 馮天然 Ecmascript5標準的10.6節有NOTE For non strict mode functions the ...