/ / създаване на нов масив и натискане на него в един ред - Javascript OOP - javascript, jquery, масиви

създайте нов масив и го натискайте на един ред - Javascript OOP - javascript, jquery, масиви

Аз имам този код с функция, в която аз се опитвам да дефинирам array след това на следващата линия, която се притиска към него:

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

Опитах това:

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

и

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

Но не успя. Има ли нещо нередно с кода .....

Отговори:

2 за отговор № 1

Липсва синтаксисът на инициализацията на масива:

var x = [ 1, 2, 3 ];

във вашия случай това би било:

this.values = [ value ];

Повече информация тук: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array


Кодът:

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

изглежда, че трябва да генерира масив и да придвижи стойността към нея. Той създава масив, но масивът не се връща x, новата дължина на масива се връща, т.е. 1.

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

Методът push () добавя един или повече елементи към края на масива и връща новата дължина на масива, [акцентът ми]


2 за отговор № 2

Просто вземете стойността в масив.

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

var point = new Spot("foo")

console.log(point);


1 за отговор № 3

Начинът, по който създавате масива и бутате value това е правилно. Но тъй като тя е създадена във функцията, която трябва да имате достъп this обект извън функцията по някакъв начин.

Тъй като не върнете нищо, можете да го наречете като конструктор.

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

var spot = new Spot();

Ако не искате да го наричате конструктор, можете просто да се върнете this обект.

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