ошибка объекта JavaScript - PullRequest
       14

ошибка объекта JavaScript

2 голосов
/ 14 декабря 2010

Это моя ситуация:



var r = {"id":"test","files":[],"code":""};


var Page = Class.create({


 initialize: function(json) {
  this.id = json.id;
  this.json = json;

 },
        start: function() {
  this.json.files.each(function(x) {
   var cssResource = this.pageResource(x, 'css');
   this.attachCssResource(cssResource);

  }.bind(this));
        },

//etc....

});

var P = new Page(r);
P.start();

Привет, this.json.files.each - это не функция. Почему?

Я использую библиотеку прототипа 1.7.

если я использую это


var P = new Page({"id":"test","files":[],"code":""});

У меня НЕТ ошибки ?? ....

Ответы [ 3 ]

1 голос
/ 14 декабря 2010

Вам может понадобиться расширить функции PrototypeJS в вашем массиве, чтобы заставить каждую функцию работать:

$A(this.json.files).each(function(x) {
   ...
}

http://www.prototypejs.org/api/utility/dollar-a

http://www.prototypejs.org/api/element/extend

1 голос
/ 14 декабря 2010

Возможно, вы можете принудительно привести его к массиву с помощью:

$A(this.json.files).each(...

Иногда мне проще работать с хешем вместо массива - $H вместо $A.

1 голос
/ 14 декабря 2010

Если вы ориентируетесь только на платформы ECMAScript 5, вам нужно будет использовать Array.forEach.

15.4.4.18 Array.prototype.forEach (callbackfn [, thisArg])

callbackfn должна быть функцией, которая принимает три аргумента.forEach вызывает callbackfn один раз для каждого элемента массива в порядке возрастания. callbackfn вызывается только для тех элементов массива, которые действительно существуют;он не вызывается для отсутствующих элементов массива.

Если указан параметр thisArg , он будет использоваться в качестве значения this для каждого вызова callbackfn.Если он не указан, вместо него используется undefined .

callbackfn вызывается с тремя аргументами: значением элемента, индексом элемента иобъект пересекается.

forEach напрямую не изменяет объект, для которого он вызывается, но объект может быть видоизменен посредством вызовов callbackfn .

Диапазон элементовОбрабатывается forEach перед первым вызовом callbackfn .Элементы, которые добавляются в массив после начала вызова forEach, не будут посещаться callbackfn .Если существующие элементы массива будут изменены, их значение, переданное в функцию обратного вызова, будет значением во время их посещения forEach;элементы, которые удаляются после начала вызова forEach и до посещения, не посещаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...