Использование указателей на функции в JavaScript - PullRequest
0 голосов
/ 06 марта 2012

Почему мой код работает только для object2?

function object1() {
    this.URL = "yahoo.com";
    this.getURL = function() { return this.URL; };
}

var object2 = new Object();
object2.URL = "gmail.com";
object2.getURL = function() { return this.URL; };

var sources = new Array();
sources[0] = object1;
sources[1] = object2;
i=0;

var source1 = sources[0];
console.log(source1.getURL());

var source2 = sources[1];
console.log(source2.getURL());

Если я пытаюсь получить URL из object1, я получаю эту ошибку: Ошибка типа: source1.getURL не является функцией

Я пытаюсь обработать несколько HTTP-соединений, которые используют разные URL, и каждый из них возвращает свой XML, который мне нужно проанализировать. Я хочу сделать это, создав Массив объектов и сделав для каждого из них, получить URL и подключиться к нему.

Ответы [ 2 ]

5 голосов
/ 06 марта 2012

Вам нужно сделать

var source1 = new sources[0]();

для создания нового объекта1.

В противном случае source1 указывает на объект функции, который не имеет такого члена, как getURL

EDIT: Вы также можете сделать sources[0] = new Object1();, но я предполагаю, что это не будет хорошо работать с дизайном, который вы собираетесь (новые объекты в массиве)

0 голосов
/ 06 марта 2012

Поскольку object1 - это функция, вы должны создать экземпляр object1.

Это будет работать

var sources = new Array();
sources[0] = new object1();
sources[1] = object2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...