Учитывая следующее заявлениеОшибка создания и доступа массив объектов
function Func1(a, b) {
this.a = a;
this.b = b;
};
Я хотел бы создать держатель место для массива объекта FUNC1. Насколько я вижу, я объявил массив элементов, поэтому он должен быть уже определен. Но каждый раз, когда я пытался получить доступ к массиву, он дал мне «неопределенную» ошибку.
var Func2 = function() {
var items = [];
this.addItem = function (a, b) {
items.push(new Func1(a, b));
}
var function2 = new Func2();
function2.addItem(2, 'test');
window.alert(function2.items[0].b); // this gives error "Unable to get property '0' of undefined or null reference. I'd like to be able to show 'test' here.
Я также изменил код, чтобы использовать объявить 'this.items = []' вместо 'вар элементов = []', это дает мне другую ошибку, следующим образом:
var Func3 = function() {
this.items = [];
this.addItem = function (a, b) {
items.push(new Func1(a, b)); // this gives error 'items' is undefined
}
};
var function3 = new Func3();
function3.addItem(3, 'test');
window.alert(function3.items[0].b); // I want to show 'test' here
я изменил функцию AddItem снова, все еще получаю ошибку
var Func4 = function() {
this.items = [];
this.addItem = function (a, b) {
items[items.length] = new Func1(a, b); // this gives error 'items' is undefined, too
}
};
Я просто не мог понять, почему код был провал, и поиск Google не помог мне много. Я мог бы не использовать правильное ключевое слово для поиска, но поиск «доступа к массиву в javascript» не дает мне хорошего результата. Буду признателен за любую помощь.
Объяснение вместо просто передачи готового кода. +1 – Cerbrus
@Cerbrus Спасибо! Здесь все еще есть много возможностей для улучшения :) – undefined
Вопрос: в варианте 1, почему нам не нужны «this.items»? Они будут вызывать путаницу с глобальными предметами (если они есть)? –