2012-03-13 2 views
-1

Я объявляю массив глобально:возвращение объекта в JS

var array = new Array; 

Я объявляю конструктор для элемента

function Element(type, format) { 
this.type= type; 
this.format = format; 
this.returnElement = function() { return this.element; } 
} 

Я хочу, чтобы вернуть значение одного из параметров, а это в массиве:

function analyse() 
{ 
    for(var i=0, len=array.length; i < len; i++) 
    { 
     var a = array[i]; 
      var b = a.type; 
      alert(b); 
    } 
} 

Теперь я хочу вернуть значение свойства объекта в i.

+0

Ума проводки, что ошибка вы получаете? А где определяется 'var array'? Использование 'var' перед ним делает его локальной переменной, если внутри функции. – Nathan

+0

Пара вещей: чтобы объявить новый массив, вы должны просто использовать 'array =()'. Второй элемент 'this.element' не существует в вашем объекте. В-третьих, вы никогда не используете свою функцию в цикле. В-четвертых, вы всегда захватываете первый элемент массива в своем цикле. В-пятых, ваш массив не имеет членов. В-шестых, если ваши члены массива не содержат параметр 'type', последняя строка ничего не сделает. В-седьмых, ваша петля ничего не делает, кроме как назначать некоторые переменные; он не предоставляет никакой информации вообще. – tkone

+0

В чем вопрос? Он не работает, не описывает, что вы пытаетесь сделать. Вы повторяете свой массив и что хотите делать во время этой итерации? Что вы ищете? Что вы хотите вернуть, когда найдете его? – jfriend00

ответ

0

Не знаю, что вы точно хотите, но есть несколько ошибок:

  • Element не объект, а функция-конструктор (который, конечно, объект Function, да)
  • array.slice(0) стеклотары array и возвращает новый массив со всеми элементами из индекса 0
  • var a = становится новым массивом и не является элементом Element. Массив не имеет свойства «типа»

Вы можете захотеть сделать

for (var i=0, len=array.length; i < len; i++) { 
     var a = array[0]; 
     //console.assert(a instanceof Element, "wrong array component detected"); 
     var b = a.type; 
} 
0

нормально, решены, это тривиально, и я онемел. просто добавили эти строки кода:

var element = new Element(); 
element = array[i]; 

и он работал ...

Смежные вопросы