qual è la differenza (se c'è) fraCoffeeScript “Array()” vs “new Array()”
x = Array()
e
x = new Array()
in CoffeeScript (o JavaScript a tal fine)? Quale dovrei usare?
qual è la differenza (se c'è) fraCoffeeScript “Array()” vs “new Array()”
x = Array()
e
x = new Array()
in CoffeeScript (o JavaScript a tal fine)? Quale dovrei usare?
Il spec dice:
Quando
Array
è chiamato come una funzione piuttosto che come un costruttore, si crea e inizializza un nuovo oggetto Array. Pertanto la funzione chiamataArray(…)
equivale all'espressione di creazione dell'oggettonew Array(…)
con gli stessi argomenti.
Credo che entrambi siano equivalenti. Tuttavia, in JavaScript, almeno, si dovrebbe sempre usare la sintassi letterale:
x = []
Ma sulla base di alcuni test nei browser che ho, Array(1, 2, 3)
dà lo stesso risultato di new Array(1, 2, 3)
, e lo stesso con Array(15)
e new Array(15)
. O semplicemente semplice new Array()
.
corretto, ci sono lo stesso esatto. – Raynos
Probabilmente dovresti usare 'x = []' sia in JavaScript che in CoffeeScript a meno che non sia necessario pre-dimensionare l'array per qualche motivo. –
mu ha esattamente ragione: usa 'arr = new Array (n)' (dove 'n' è un numero) se e solo se stai facendo qualcosa di intensivo in termini di prestazioni dove sai quanto grande sarà la matrice in anticipo, quindi la memoria richiesta viene allocata tutto in una volta (in linea di principio). –
È necessario utilizzare il valore letterale []
. I motivi sono indicati here. Utilizzando il costruttore Array()
può essere ambigua, in quanto accetta sia un length
o un elenco di elementi:
new Array(5) // []
new Array('5') // ['5']
[5] // [5]
['5'] // ['5']
La ragione per cui è possibile utilizzare Array
senza che l'operatore new
è che internamente fa un trucco comune con i costruttori:
function Thing(){
if (!(this instanceof Thing)){
return new Thing()
}
// ... define object
}
Cioè, se si chiama Thing()
chiamerà per voi new Thing()
.
È possibile trovare questo interessante: http://stackoverflow.com/questions/383402/is-javascript-s-new-keyword-considered-harmful – nickd