ошибка объекта javascript
Вот моя ситуация:
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();
Привет.формат JSON.файлы.каждая из них не является функцией.. почему?
Я использую библиотеку prototype 1.7.
Если я использую это
var P = new Page({"id":"test","files":[],"code":""});
У меня нет ошибки??....
3 ответа:
Возможно, вам потребуется расширить функции PrototypeJS в вашем массиве, чтобы заставить каждую функцию работать:
$A(this.json.files).each(function(x) { ... }
Если вы ориентируетесь только на платформы ECMAScript 5, вы захотите использовать
Array.forEach
.15.4.4.18 массив.прототип.forEach (callbackfn [, thisArg ] )
callbackfn должна быть функцией, которая принимает три аргумента. forEach вызывает callbackfn один раз для каждого элемента, присутствующего в массиве, в порядке возрастания. callbackfn вызывается только для реально существующих элементов массива; он не вызывается для отсутствующих элементов массива. массив.
Если указан параметр thisArg , то он будет использоваться в качестве этого значения для каждого вызова callbackfn. Если он не предусмотрен, вместо него используетсяundefined .
callbackfn вызывается с тремя аргументами: значением элемента, индексом элемента и объектом обхода.
ForEach не мутирует непосредственно объект, на который он вызывается, но объект может быть мутирован вызовами к callbackfn .
Диапазон элементов, обрабатываемых forEach, устанавливается перед первым вызовомcallbackfn . Элементы, которые добавляются к массиву после начала вызова forEach, не будут посещаться callbackfn . Если существующие элементы массива изменены,то их значение, передаваемое в callback, будет равно значению в момент их посещения forEach; элементы, удаленные после начала вызова forEach и до посещения, не будут посещаться.