Хорошо, я знаю, что это глупый вопрос, и на глупые вопросы чаще всего труднее всего найти ответы, так как все предполагают, что они только что известны. Во всяком случае, у меня есть это:
var map = {
"key1" : "someValue1",
"key2" : "someValue2"
};
И затем я перечисляю записи так:
Y.Object.each( map, function(value,key,object) {
// do something;
} );
Но то, что я действительно хочу сделать, это что-то вроде:
map = Y.Object.wrap(map);
map.each( function(value,key,object) {
} );
Стоит отметить, что исходный объект может быть передан в качестве аргумента, поэтому я не всегда буду их конструировать. Другими словами, я действительно хочу обернуть один (и таким способом, который не будет двойной оберткой, если она уже обернута). Ответ, вероятно, очевиден, и даже в документации я просто не могу его найти. Так я через себя на милость гуглсферы ...
--------------------- РЕДАКТИРОВАТЬ --------------------
Когда я говорю «обернуть», я думаю, что я имею в виду (на языке YUI) увеличение. Другими словами, я хотел бы, чтобы методы Y.Object были непосредственно доступны для рассматриваемого объекта. Например, я хочу иметь возможность сделать что-то вроде этого:
var map = {
"key1" : "someValue1",
"key2" : "someValue2"
};
map.each( function(value,key,object) {
//do something with each entry in my map
} );
Вместо того, чтобы всегда делать это:
var map = {
"key1" : "someValue1",
"key2" : "someValue2"
};
Y.Object.each( map, function(value,key,object) {
//do something with each entry in my map
} );
Для этого есть две причины. Во-первых, я ленивый и не хочу продолжать набирать Y.Object.each( myObject...
, когда все, что мне нужно, - это перебирать каждое свойство моего объекта. Во-вторых, я хочу быть совместимым с прямой совместимостью, чтобы, когда функции each
и some
были определены изначально (что, я думаю, они уже есть в Firefox и Chrome), я могу использовать собственные реализации без изменения кода. Я думаю, что вторая причина - это то, что Крокфорд, похоже, подчеркивает, поскольку он всегда говорит, что если вы хотите добавить функцию к прототипу объекта, сделайте это таким образом, чтобы проверить, определена ли функция уже перед выполнением. так. Не стесняйтесь исправлять меня, если я ошибаюсь где-то выше, и, как всегда, не стесняйтесь предложить решение:)