/ / vytvorte nové pole a zatlačte doň v jednom riadku - Javascript OOP - javascript, jquery, arrays

vytvoriť nové pole a zasunúť do nej jeden riadok - Javascript OOP - javascript, jquery, arrays

Tento kód používam s funkciou, v ktorej sa pokúšam definovať array potom na ďalší riadok tlačením na ňu:

function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}

Snažil som sa toto:

this.values = [].push(value);

a

this.values = (this.values || []).push(value);

Ale zlyhalo. Nie je niečo v poriadku s kódom .....

odpovede:

2 pre odpoveď č. 1

Chýba vám syntax inicializácie poľa:

var x = [ 1, 2, 3 ];

vo vašom prípade by to bolo:

this.values = [ value ];

Viac informácií nájdete tu: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array


Kód:

var x = ([]).push("y");

vyzerá to, že by malo vygenerovať pole a posunúť doň hodnotu. Vytvorí to pole, na ktoré sa však pole nevráti x, vráti sa nová dĺžka poľa, tj 1.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push

Metóda push () pridáva jeden alebo viac prvkov na koniec poľa a vráti novú dĺžku poľa. [dôraz môj]


2 pre odpoveď č. 2

Stačí vziať hodnotu do poľa.

function Spot(value) {
this.x = null;
this.y = null;
this.values = [value];
}

var point = new Spot("foo")

console.log(point);


1 pre odpoveď č. 3

Spôsob, akým vytvárate pole a tlačíte value je to správne. Ale pretože je vytvorený vo vnútri funkcie, musíte mať prístup this objekt nejakým spôsobom mimo funkcie.

Pretože nič nevraciate, môžete to nazvať ako konštruktér.

var spot = new Spot()
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}

var spot = new Spot();

Ak to nechcete nazvať ako konštruktér, môžete sa jednoducho vrátiť this objekt.

function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
return this;
}