/ / crea un nuovo array e inseriscilo in una riga - Javascript OOP - javascript, jquery, array

crea un nuovo array e inseriscilo in una riga - Javascript OOP - javascript, jquery, array

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 № 1

Manca 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;
}