Ho "questo codice con una funzione, in cui un I" sto cercando di definire un array
quindi sulla riga successiva spingendo ad esso:
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}
Ho provato questo:
this.values = [].push(value);
e
this.values = (this.values || []).push(value);
Ma fallito. C'è qualcosa che non va nel codice .....
risposte:
2 per risposta № 1Manca la sintassi di inizializzazione dell'array:
var x = [ 1, 2, 3 ];
nel tuo caso, questo sarebbe:
this.values = [ value ];
Maggiori informazioni qui: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
Il codice:
var x = ([]).push("y");
sembra che dovrebbe generare un array e inserirvi il valore. Crea l'array, tuttavia l'array non viene restituito x
, viene restituita la nuova lunghezza dell'array, ad es 1
.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
Il metodo push () aggiunge uno o più elementi alla fine di un array e restituisce la nuova lunghezza della matrice. [enfasi mia]
2 per risposta № 2
Prendi il valore in un array.
function Spot(value) {
this.x = null;
this.y = null;
this.values = [value];
}
var point = new Spot("foo")
console.log(point);
1 per risposta № 3
Il modo in cui crei l'array e spingi value
ad esso è corretto. Ma dal momento che viene creato all'interno della funzione è necessario accedere this
oggetto in qualche modo al di fuori della funzione.
Poiché non stai restituendo nulla, puoi chiamarlo come costruttore.
var spot = new Spot()
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}
var spot = new Spot();
Se non vuoi chiamarlo come costruttore, puoi semplicemente tornare this
oggetto.
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
return this;
}