Как проверить наличие пустого объекта JavaScript?


3116

После AJAX-запроса мое приложение иногда может возвращать пустой объект, например:

var a = {};

Как я могу проверить, так ли это?


7
Вы используете скрипт JSON.js? Или любая другая библиотека JSON. Затем вы можете использовать функцию JSON.encode () для преобразования var в строку, а затем протестировать ее.
— Thevs

if( Object.entries(a).length > 0){ //do }
— Мухаммед Шахзад

Ответы:


5431

ECMA 5+ :

// because Object.keys(new Date()).length === 0;
// we have to do some additional check
Object.keys(obj).length === 0 && obj.constructor === Object

Обратите внимание, что это создает ненужный массив (возвращаемое значение keys ).

Pre-ECMA 5:

function isEmpty(obj) {
  for(var prop in obj) {
    if(obj.hasOwnProperty(prop)) {
      return false;
    }
  }

  return JSON.stringify(obj) === JSON.stringify({});
}

JQuery :

jQuery.isEmptyObject({}); // true

Лодаш :

_.isEmpty({}); // true

Подчеркнуть :

_.isEmpty({}); // true

Хук

Hoek.deepEqual({}, {}); // true

ExtJS

Ext.Object.isEmpty({}); // true

AngularJS (версия 1)

angular.equals({}, {}); // true

Ramda

R.isEmpty({}); // true

22
Вот тест производительности между jQuery и подчеркиванием jsperf.com/isempty-vs-isemptyobject/6
— Михаил

20
Object.keys(new Date()).length === 0; поэтому этот ответ может вводить в заблуждение.
— cjbarth

6
Вместо того , чтобы stringifying вещи , которые вы также можете воспользоваться этим фактом: (new Date()).constructor === Dateили , наоборот, ({}).constructor === Object.
— Джон Нельсон

2
angular.equals ({}, {});
— Джереми А. Уэст

11
Object.keys()не проверяет не перечисляемые свойства или символы. Вам нужно использовать Object.getOwnPropertyNames()и Object.getOwnPropertySymbols()вместо. Кроме того, Object.getPrototypeOf()это правильный способ получить прототип объекта. obj.constructorможет быть легко подделан. Пример: function Foo() {} Foo.prototype.constructor = Object; (new Foo()).constructor === Object // true.
— Джесси

863

Нет простого способа сделать это. Вы должны будете зациклить свойства явно:

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return true;
}

Если доступна поддержка ECMAScript 5 , вы можете использовать Object.keys()вместо:

function isEmpty(obj) {
    return Object.keys(obj).length === 0;
}

56
Это работает нормально или проще: function isEmpty (object) {for (var i in object) {return true; } вернуть ложь; }
— Николас Крейдберг

36
Разве в этой функции нельзя изменить истину и ложь?
— Намтакс

25
@namtax: нет - функция названа isEmpty(), поэтому она должна вернуться, falseесли у нее есть свойство
— Кристоф

6
пустой объект расширит класс объекта по умолчанию, но если прототип объекта будет изменен, ваша упрощенная функция не будет выполнена, учтите: Object.prototype.a = 'hi'; var obj = {}; оповещения (obj.a); // выводит "hi" isEmpty (obj) // возвращает false
— venimus

29
Вы не должны использовать второй пример, поскольку это O (n) сложность времени и O (n) сложность пространства, тогда как первый - O (1).
— Брайан

572

Для тех из вас, кто имеет ту же проблему, но использует jQuery, вы можете использовать jQuery.isEmptyObject .


43
ПРИВЕТ! Я просто потратил несколько часов на отладку проблем IE 8 и обнаружил, что проблема была в jQuery.isEmptyObject. Возвращает true, если объект пуст.
— MFD3000

162
Почему вы публикуете ответ, включая jQuery, если вопрос вообще не касается jQuery?
— Эру

47
Я знаю, что это старый комментарий, но мне интересно ваш вопрос @ MFD3000, потому что в документе написано: возвращает истину, если объект пуст (как следует из названия)
— Александр Фишер

21
включение jQuery для такой основной задачи - это не то, что я бы назвал правильным ответом. Это правда, что в настоящее время jQuery почти повсеместен, но все же мы не должны забывать, что он построен на очень способном языке.
— Пабло Мешер

54
Типичный JS снобизм в этих комментариях. Всем известно, что огромная доля JavaScript в Интернете написана на jQuery, поэтому вполне приемлемо предоставить здесь решение для jQuery, если в нем уже есть встроенный метод для тестирования объектов. Вероятно, тысячи разработчиков, ищущих помощи, сочтут этот ответ полезным. Никто не сказал, что это единственный способ сделать это. Я замечаю, как никто не ведет себя так, как элитар, в отношении парня, который разместил решение для использования underscore.js...
— BadHorsie

278

Это мое предпочтительное решение:

var obj = {};
return Object.keys(obj).length; //returns 0 if empty or an integer > 0 if non-empty

1
Проблема совместимости с IE9. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
— doublejosh

3
@Jero Franzani: нет, это не так
— nikoskip

Длина Object.keys ({}). В 10 раз медленнее, чем опция (for ... in ...) - я советую избегать ее в качестве способа проверки, является ли объект пустым.
— Давидадас

10
Object.keys(new Date()).length === 0; поэтому этот ответ может вводить в заблуждение.
— cjbarth

new Date()это не объект. nd = new Date(); nd.constructor === Object;результаты в false.
— Pors

204

Ты можешь использовать Underscore.js .

_.isEmpty({}); // true

19
Или вы можете использовать lodash is empty ( lodash.com/docs#isEmpty ), но чем это отличается от использования решения jQuery - вам все равно нужно установить дополнительную библиотеку. Я думаю, что намерение - ванильное решение JavaScript.
— tfmontague

10
Другое дело, если вы хотите использовать JS на сервере с Node.js. Мало кто захочет использовать jQuery (интерфейсную библиотеку, используемую в основном для манипуляций с DOM) на серверной части.
— Нан

3
Подчеркивание @tfmontague очень распространено в нодовых приложениях, почти такое же вездесущее, как jQ на стороне клиента. У меня уже было необходимое подчеркивание, но я не осознавал, что у него есть эта функция
— rw-nandemo

5
Подчеркивание заменяется на lodash. Используйте это вместо этого.
— demisx

2
Только будьте осторожны с типами Дата, IsEmpty всегда возвращает истину для даты, см github.com/jashkenas/underscore/issues/445
— Mentat

116
if(Object.getOwnPropertyNames(obj).length === 0){
  //is empty
}

см. http://bencollier.net/2011/04/javascript-is-an-object-empty/


5
Это включает в себя не перечислимые свойства, в случае, если вы заботитесь.

Длина Object.getOwnPropertyNames ({}). Длина в 10 раз медленнее, чем опция (for ... in ...) - я советую избегать ее в качестве способа проверки, является ли объект пустым.
— Давидадас

4
Object.getOwnPropertyNames(new Date()).length === 0; поэтому этот ответ может вводить в заблуждение.
— cjbarth

80

Как насчет использования JSON.stringify? Это почти доступно во всех современных браузерах.

function isEmptyObject(obj){
    return JSON.stringify(obj) === '{}';
}

23
return (JSON.stringify (obj) == '{}')
— Вик

26
Это медленно и скорость имеет значение для такого рода утилит. Быстрый тест производительности здесь: jsperf.com/empty-object-test

1
Это очень медленный вариант - я предлагаю вместо этого использовать (для ... in)
— davidhadas

2
И это не работает для объектов, которые содержат функции.
— Феликс Клинг

1
Он также выдаст ошибку, если в объекте есть круговая ссылка. Так что это медленно, ненадежно и может генерировать ошибки и ломать все остальное. Нет причин использовать это когда-либо.
— Бурак

62

Я просто столкнулся с подобной ситуацией. Я не хотел использовать JQuery, и хотел сделать это, используя чистый Javascript.

И то, что я сделал, использовало следующее условие, и оно сработало для меня.

var obj = {};
if(JSON.stringify(obj) === '{}') { //This will check if the object is empty
   //Code here..
}

Для не равно, используйте это: JSON.stringify(obj) !== '{}'

Проверьте это JSFiddle


4
Сбой для объектов с круговыми ссылками, поскольку JSON.stringify специально выдает исключение для них.
— Педро Монтото Гарсия

1
@ PedroMontotoGarcía Хорошо, а как пустой объект будет иметь циклическую ссылку?
— KthProg

8
Если объект не пустой (и он должен работать для них тоже).
— Педро Монтото Гарсия

Кажется, это уже упоминалось @Ateszki и является одним из самых медленных способов проверить, не является ли объект пустым.
— cwadding

Ах, да .. Я пропустил это. Я столкнулся с ситуацией, когда я хотел достичь этого javascript, и, подумав немного, я разобрался с этим. @Ateszki, даже я, хоть ты и сделал. :-) Кстати, было много ответов на этот вопрос, и поэтому я пропустил ваш ответ.
— Аниш Наир

60

Старый вопрос, но только что был вопрос. Включение JQuery не очень хорошая идея, если ваша единственная цель - проверить, не является ли объект пустым. Вместо этого просто углубитесь в код JQuery , и вы получите ответ:

function isEmptyObject(obj) {
    var name;
    for (name in obj) {
        if (obj.hasOwnProperty(name)) {
            return false;
        }
    }
    return true;
}

5
Это полезно, только если какой-то другой процесс не добавил прототип к вашему базовому объекту. Чтобы это действительно работало, вам нужно протестировать obj.hasOwnProperty (name)
— mpemburn

1
Это ничего не добавляет к ответу Кристофа от 2009 года.
— Дан Даскалеску

39

Существует простой способ, если вы используете более новый браузер. Object.keys(obj).length == 0


1
Откуда берется keysсобственность?


1
Как вышеупомянутый комментарий может иметь 4 отзыва? Да, Object.keysэто стандартный метод, но у объектов нет свойства keys. Таким образом, этот код будет сообщать о любом объекте как о пустом, за исключением того, что случайно получено свойство, имя которого keyимеет значение, которое снова в качестве свойства, lengthкоторое не равно нулю. Ужасный!
— scravy

Object.keys(new Date()).length === 0; поэтому этот ответ может вводить в заблуждение.
— cjbarth

11
@scravy Object - это класс Object. У объекта есть статический метод с именем 'keys', который принимает объект в качестве аргумента. Этот метод возвращает массив строк, где строки являются именами свойств. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
— Sgnl

35

Представление

Сегодня 2020.01.17 я выполняю тесты на MacO HighSierra 10.13.6 на Chrome v79.0, Safari v13.0.4 и Firefox v72.0 для выбранных решений.

Выводы

  • решения на основе for-in(A, J, L, M) являются самыми быстрыми
  • решения на основе JSON.stringify(B, K) являются медленными
  • также неожиданно решение на основе Object(N) является медленным

введите описание изображения здесь

подробности

Ниже во фрагменте представлены 15 решений. Если вы хотите запустить тест производительности на вашем компьютере, нажмите ЗДЕСЬ .

введите описание изображения здесь


многое из этого не имеет смысла, потому что вы основываете все на возврате ложных и или истинных. Иногда программированию нужен оператор if или троичный оператор. просто к сведению
— Кристиан Мэтью

1
Это лучший ответ, спасибо, первое решение работает как очарование
— Карлос Хесус Аранчибия Таборга

33

Использование Object.keys (obj) .length (как предложено выше для ECMA 5+) в 10 раз медленнее для пустых объектов! сохранить с старой школы (для ... в) вариант.

Протестировано под Node, Chrome, Firefox и IE 9, становится очевидным, что для большинства случаев использования:

  • (для ... в ...) это самый быстрый вариант для использования!
  • Object.keys (obj) .length в 10 раз медленнее для пустых объектов
  • JSON.stringify (obj) .length всегда самый медленный (не удивительно)
  • Object.getOwnPropertyNames (obj) .length занимает больше времени, чем Object.keys (obj) .length может быть намного длиннее в некоторых системах.

В конечном итоге, используйте:

function isEmpty(obj) { 
   for (var x in obj) { return false; }
   return true;
}

или

function isEmpty(obj) {
   for (var x in obj) { if (obj.hasOwnProperty(x))  return false; }
   return true;
}

См. Подробные результаты тестирования и тестовый код на странице Пусто ли объект?


Object.keysмедленно, но меньше кода. На маленькой странице, где это называется ... может быть, в 10 раз ... Будет ли это все еще медленнее, учитывая дополнительное время разбора дополнительного кода?
— Янки

32

Вы можете проверить количество ключей объекта:

if (Object.keys(a).length > 0) {
    // not empty
}

8
Зачем вам добавлять комментарий к ответу, который уже был дан, и давать худший ответ? stackoverflow.com/a/32108184/4229159 и это первый ответ от апреля
— Алехандро

Как, если у меня есть очень большой объект, и я делаю это в каждом цикле, чтобы посмотреть, был ли объект пуст?
— StefansArya

27
  1. Просто обходной путь. Может ли ваш сервер генерировать какое-то специальное свойство в случае отсутствия данных?

    Например:

    var a = {empty:true};

    Тогда вы можете легко проверить это в своем коде обратного вызова AJAX.

  2. Еще один способ проверить это:

    if (a.toSource() === "({})")  // then 'a' is empty

РЕДАКТИРОВАТЬ : Если вы используете любую библиотеку JSON (например, JSON.js), то вы можете попробовать функцию JSON.encode () и проверить результат по пустой строке значения.


6
toSource()не является стандартным и не работает в IE или Opera (и, возможно, в других браузерах, которые я не проверял)
— Christoph

4
@Thevs: возможно, у вас другая копия текущей версии ECMA-262, но у меня нет toSourceсвойства в разделе 15.2.4; согласно MDC, он был представлен в JS1.3 (т.е. Netscape Navigator 4.06), но его нет в ECMA-262, 3-е издание!
— Кристоф

4
@Thevs: ну, по крайней мере, 2 крупных производителя браузеров не внедрили его, так что это вряд ли де-факто-стандарт, и, поскольку он не в ECMA-262, он тоже не настоящий ...
— Кристоф

4
Даже когда это работает, toSource()это ужасный способ сделать это (как есть JSON.encode()). Нужно создать строку, представляющую весь ваш объект, чтобы просто проверить, пустой ли он. Преобразование вещей в строки сопряжено с дополнительными затратами, но, кроме того, потребуется преобразовать миллион вещей, если у вашего объекта есть миллион свойств, а если вы просто посмотрите на одно, вы узнаете, что он не пустой.
— Джаспер

4
@Thevs накладные расходы больше, даже если они могут быть (я не уверен, что это при всех обстоятельствах) в том же порядке. Тем не менее, этот ответ включает в себя возвращение ложного, как только будет найдено другое свойство, что делает историю все вместе ...
— Джаспер

25

Я создал полную функцию, чтобы определить, является ли объект пустым.

Оно использует Object.keys из ECMAScript 5 (ES5) функциональности , если это возможно , чтобы достичь максимальной производительности (см таблицу совместимости ) и резервные объявления к наиболее совместимый подход для более старых двигателей (браузеры).

Решение

/**
 * Returns true if specified object has no properties,
 * false otherwise.
 *
 * @param {object} object
 * @returns {boolean}
 */
function isObjectEmpty(object)
{
    if ('object' !== typeof object) {
        throw new Error('Object must be specified.');
    }

    if (null === object) {
        return true;
    }

    if ('undefined' !== Object.keys) {
        // Using ECMAScript 5 feature.
        return (0 === Object.keys(object).length);
    } else {
        // Using legacy compatibility mode.
        for (var key in object) {
            if (object.hasOwnProperty(key)) {
                return false;
            }
        }
        return true;
    }
}

Вот суть этого кода.

А вот и JSFiddle с демонстрацией и простым тестом.

Надеюсь, это кому-нибудь поможет. Ура!


3
Это не подходит для nullобъекта.

Привет @torazaburo! Спасибо, что обратили внимание! Я обновил все источники с правильной реализацией.
— Слава Фомин II

1
Длина Object.keys ({}). В 10 раз медленнее, чем опция (for ... in ...) - я советую избегать ее в качестве способа проверки, является ли объект пустым.
— Давидадас

1
Object.keys(new Date()).length === 0; поэтому этот ответ может вводить в заблуждение.
— cjbarth

19

Я использую это.

function isObjectEmpty(object) {
  var isEmpty = true;
  for (keys in object) {
     isEmpty = false;
     break; // exiting since we found that the object is not empty
  }
  return isEmpty;
}

Например:

var myObject = {}; // Object is empty
var isEmpty  = isObjectEmpty(myObject); // will return true;

// populating the object
myObject = {"name":"John Smith","Address":"Kochi, Kerala"}; 

// check if the object is empty
isEmpty  = isObjectEmpty(myObject); // will return false;

отсюда

Обновить

ИЛИ

Вы можете использовать реализацию jQuery isEmptyObject

function isEmptyObject(obj) {
  var name;
  for (name in obj) {
    return false;
  }
  return true;
}

Привет. когда вы проверяете эту функцию с числом или логическим значением true или false, возвращайте значение true, и это неверный результат. isObjectEmpty (правда). isObjectEmpty (ложь). isObjectEmpty (1)
— иман

2
Мы проверяем, является ли объект пустым, а не является ли тип данных объектом. В вашем случае, чтобы проверить, является ли это объектом, нам нужно что-то вроде if (typeof a === "object") {...}
— kiranvj

15

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

Скрипт работает на ES6.

const isEmpty = (obj) => {
    if (obj === null ||
        obj === undefined ||
        Array.isArray(obj) ||
        typeof obj !== 'object'
    ) {
        return true;
    }
    return Object.getOwnPropertyNames(obj).length === 0;
};
console.clear();
console.log('-----');
console.log(isEmpty(''));           // true
console.log(isEmpty(33));           // true
console.log(isEmpty([]));           // true
console.log(isEmpty({}));           // true
console.log(isEmpty({ length: 0, custom_property: [] })); // false
console.log('-----');
console.log(isEmpty('Hello'));      // true
console.log(isEmpty([1, 2, 3]));    // true
console.log(isEmpty({ test: 1 }));  // false
console.log(isEmpty({ length: 3, custom_property: [1, 2, 3] })); // false
console.log('-----');
console.log(isEmpty(new Date()));   // true
console.log(isEmpty(Infinity));     // true
console.log(isEmpty(null));         // true
console.log(isEmpty(undefined));    // true


15

Согласно ES2017 спецификации на Object.entries () , проверка просто с помощью любого современного browser--

Object.entries({}).length === 0

3
Есть ли польза от использования этого Object.keysили Object.values?
— faintsignal

@faintsignal, используя те, прекрасно. Я просто добавил записи, так как не нашел его в комментариях.
— Викрант

13
function isEmpty(obj) {
  for(var i in obj) { return false; }
  return true;
}

4
Это также сообщит об истинности, когда, например, библиотека JavaScript расширяется Objectс помощью метода через цепочку прототипов, потому что это перечислимо, и for inоператор проходит через перечисляемые свойства.
— viam0Zah

12

jQuery имеет специальную функцию isEmptyObject()для этого случая:

jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false

Узнайте больше на http://api.jquery.com/jQuery.isEmptyObject/


12

Я бы пошел для проверки, если у него есть хотя бы один ключ. Этого было бы достаточно, чтобы сказать мне, что это не пусто.

typeof obj !== "undefined" && Boolean(Object.keys(obj)[0])

1
Что делать, если первый ключ возвращает falseзначение? результат будет falseневерным.
— Джимми Обонио Абор

Я проверял это. Можете привести рабочий пример?
— Тудор Морар,

1
это коротко и кратко, но приведет к ошибке во время выполнения, если объект не определен
— Мринмой

11

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

for(key in obj){
   //your work here.
 break;
}

Разработанный в ES5 , проще говоря, вы можете проверить длину ключей объекта, используя Object.Keysметод, который принимает ваш объект в качестве параметра:

if(Object.keys(obj).length > 0){
 //do your work here
}

Или, если вы используете Lodash (вы должны быть) тогда.

 _.isEmpty(obj) //==true or false

Хотя это правильно, как нечетный способ сделать оператор if - это, вероятно, запутает кого-то, кто будет поддерживать код после вас.
— Сорен

10


Вы можете использовать этот простой код, который не использовал jQuery или другие библиотеки

var a=({});

//check is an empty object
if(JSON.stringify(a)=='{}') {
    alert('it is empty');
} else {
    alert('it is not empty');
}

Класс JSON и его функции ( синтаксический анализ и stringify ) очень полезны, но есть некоторые проблемы с IE7, которые вы можете исправить с помощью этого простого кода http://www.json.org/js.html .

Другой простой способ (самый простой способ):
вы можете использовать этот способ без использования объекта jQuery или JSON .

var a=({});

function isEmptyObject(obj) {
    if(typeof obj!='object') {
        //it is not object, so is not empty
        return false;
    } else {
        var x,i=0;
        for(x in obj) {
            i++;
        }
        if(i>0) {
            //this object has some properties or methods
            return false;
        } else {
            //this object has not any property or method
            return true;
        }
    }
}

alert(isEmptyObject(a));    //true is alerted

JSON.stringifyРешение не может быть выполнено, если объект содержит не строковые свойства, такие как функции или «неопределенные», хотя это и является крайним случаем.

10

Лучший способ, который я нашел:

function isEmpty(obj)
{
    if (!obj)
    {
        return true;
    }

    if (!(typeof(obj) === 'number') && !Object.keys(obj).length)
    {
        return true;
    }

    return false;
}

Работает на:

    t1: {} -> true
    t2: {0:1} -: false
    t3: [] -> true
    t4: [2] -> false
    t5: null -> true
    t6: undefined -> true
    t7: "" -> true
    t8: "a" -> false
    t9: 0 -> true
    t10: 1 -> false

3
Я бы сказал, что 0 не пусто, так как на самом деле это число. все остальное выглядит хорошо, но исправить это легко. в первом операторе if добавьте это. if (!obj && obj !== 0),
— mjwrazor

9

Мой дубль:

function isEmpty(obj) {
    return !Object.keys(obj).length > 0;
}

var a = {a:1, b:2}
var b = {}

console.log(isEmpty(a)); // false
console.log(isEmpty(b)); // true

Просто я не думаю, что все браузеры в Object.keys()настоящее время реализуют .


2
Object.keys(new Date()).length === 0; поэтому этот ответ может вводить в заблуждение.
— cjbarth

3
Зависит от того, считаете ли вы дату всегда «полной», несмотря на то, что никогда не выставляете ключи. Но я согласен, что, если это ваш план, добавление некоторого дополнительного экземпляра проверки для конструктора Date является хорошим вариантом.
— NiKo

9

Если jQuery и веб-браузер недоступны, в underscore.js также есть функция isEmpty.

_.isEmpty({}) // returns true

Кроме того, он не предполагает, что входной параметр является объектом. Для списка, или строки, или неопределенного, это также приведет к правильному ответу.



7

Предостережение! Остерегайтесь ограничений JSON.

javascript:
  obj={  f:function(){}  };
  alert( "Beware!! obj is NOT empty!\n\nobj = {  f:function(){}  }" + 
               "\n\nJSON.stringify( obj )\n\nreturns\n\n" +
                        JSON.stringify( obj ) );

дисплеи

    Осторожно !! объект НЕ пуст!

    obj = {f: function () {}}

    JSON.stringify (obj)

    возвращается

    {}

7

Правильный ответ:

const isEmptyObject = obj =>
  Object.getOwnPropertyNames(obj).length === 0 &&
  Object.getOwnPropertySymbols(obj).length === 0 &&
  Object.getPrototypeOf(obj) === Object.prototype;

Это проверяет, что:

  • Объект не имеет собственных свойств (независимо от перечисляемости).
  • У объекта нет собственных символов собственности.
  • Прототип объекта точно Object.prototype.

Другими словами, объект неотличим от объекта, созданного с помощью {}.


6

В дополнение к ответу Thevs:

var o = {};
alert($.toJSON(o)=='{}'); // true

var o = {a:1};
alert($.toJSON(o)=='{}'); // false

это jquery + jquery.json


Мне не нравится использовать JSON, потому что он не может работать с круговыми объектными структурами.
— itdoesntwork

2
Если ваша страница загружает jQuery, тогда используйте $.isEmptyObject(), не тратьте циклы с неочевидными конверсиями.
— skierpage

6

Sugar.JS предоставляет расширенные объекты для этой цели. Код прост и понятен:

Сделайте расширенный объект:

a = Object.extended({})

Проверьте его размер:

a.size()
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.