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ď č. 1Chý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;
}