當時我在分享會,想試試,但身邊沒有電腦。今天打開 Firebug 的那一瞬間,突然記起這事。馬上試了一下之前想的一個方案。可以!代碼如下:
復制代碼 代碼如下:
function a(){
var arr = Array(arguments);
alert(arr instanceof Array);
}
a('b');
在看 Baidu Tangram 的時候,最常看到的是 String('a string'),不像其實地方的用法,是使用與一個空字符串字面量相加來強制類型轉換。當時,就想到了如果 Array() 可以實現,那不是更爽?當然。而這是為什麼呢?可以看一下這個打印出來的日志:
復制代碼 代碼如下:
console.log(Array,[],Array(),new Array())
// => [undefined] [] [] []
console.log(Array('sofish'), ['sofish'], new Array('sofish'))
// => ["sofish"] ["sofish"] ["sofish"]有趣吧。其實像 new Array() 可以省去 new,變成 Array(),都是創建一個空數組實例。
至於用那種方法好,我也遇到的情況並不多,不能說明什麼狀態。類型的轉換我們需要常用到的,還需要去做更深層的研究。而像第一種做法,至少可是很多現在流行的框架使用的方法。一般情況下都用在於把 function 的 arguments 對象轉換為數組來讓我們可以對其做更多的事。如果你想使用的話,保險的用法還是用第一種。