Я "ве цей код з функцією, в якій я" я намагаюся визначити 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;
}