Prototype.js: как я могу вернуть массив без всех методов, с которыми Prototypes расширяет массив? - PullRequest
1 голос
/ 22 апреля 2010

Есть ли способ вернуть новую версию массива / хэша, которая не содержит все методы / функции, с помощью которых прототип расширяет объект массива?

Пример:

var myArray = $A();

myArray['test'] = '1';

myArray['test2'] = '2';

var myVariableToPassToAjax = myArray;

Если я отлаживаю myVariableToPassToAjax, это выглядит так:

Array
(

  [test] => 1

  [test2] => 2

  [each] => function each(iterator, context) {
    ..........
    ..........
  }

  ...and all the other extended array functions
);

Есть ли способ решить эту проблему?: - /

Мортен

Ответы [ 2 ]

0 голосов
/ 22 апреля 2010

Prototype расширяет прототип объекта Array, поэтому он практически разрывает циклы for (in) и увеличивает риск наложения ваших собственных ключей. Начните с чтения, почему JavaScript «ассоциативные массивы» считаются вредными , и попробуйте , используя объект вместо ассоциативных массивов .

Отправка объекта через AJAX.Request осуществляется путем простой передачи его в качестве параметра «параметры»:

var myObj = {};
myObj['test'] = '1';
myObj['test2'] = '2';
new Ajax.Request([url], {
    parameters: myObj
});
0 голосов
/ 22 апреля 2010

В любом случае вы, похоже, не используете свойства Array для Array, поэтому вместо этого вы можете просто вернуть объект:

var o = {
    test1: '1',
    test2: '2'
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...