Самый устойчивый ответ (т.е. это получает намерение того, что Вы пытаетесь сделать при порождении наименьшего количества ошибок), был бы:
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// Get the size of an object
var size = Object.size(myObj);
существует своего рода конвенция в JavaScript, что Вы не добавляете вещи к Object.prototype, потому что это может повредить перечисления в различных библиотеках. Добавление методов для Возражения обычно безопасно, все же.
Вот обновление по состоянию на 2016 и широко распространенное развертывание ES5 и вне. Для IE9 + и весь другой современный ES5 + способные браузеры, можно использовать Object.keys()
, таким образом, вышеупомянутый код просто становится:
var size = Object.keys(myObj).length;
Это не должно изменять существующий прототип, так как Object.keys()
теперь встроен.
Редактирование : Объекты могут иметь символьные свойства, которые не могут быть возвращены с помощью метода Object.key. Таким образом, ответ был бы неполным, не упоминая их.
тип Символа был добавлен к языку для создания уникальных идентификаторов для свойств объектов. Основное преимущество типа Символа является предотвращением перезаписей.
Object.keys
или Object.getOwnPropertyNames
не работает на символьные свойства. Для возврата их, необходимо использовать Object.getOwnPropertySymbols
.
var person = {
[Symbol('name')]: 'John Doe',
[Symbol('age')]: 33,
"occupation": "Programmer"
};
const propOwn = Object.getOwnPropertyNames(person);
console.log(propOwn.length); // 1
let propSymb = Object.getOwnPropertySymbols(person);
console.log(propSymb.length); // 2
Если вы хотите, чтобы папка была частью пакета приложений, вам необходимо создать ссылку на папку внутри группы «Ресурсы» вместо группы (она будет отображаться в Xcode как синяя папка, а не как желтая. ).
Для этого вы перетаскиваете папку из Finder и выбираете ссылку на папку при появлении запроса.
Как только вы это сделаете, вы сможете получить содержимое папки примерно так:
NSError *error = nil;
NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath]
stringByAppendingPathComponent:@"YourFolder"];
NSArray *yourFolderContents = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:yourFolderPath error:&error];