powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / has own property & typeof
5 сообщений из 5, страница 1 из 1
has own property & typeof
    #38112892
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, люди добрые есть ли смысл в проверке дополнительной?

Подход #1
Код: javascript
1.
2.
3.
4.
5.
6.
    function(data) {
        data.hasUserList = function() { return data.hasOwnProperty('users') && $.isArray(data.users); };
        data.hasDescription = function() { return data.hasOwnProperty('description') && (typeof(data.users) == 'string'); };

        ...
    }



Подход #2
Код: javascript
1.
2.
3.
4.
5.
6.
    function(data) {
        data.hasUserList = function() { return $.isArray(data.users); };
        data.hasDescription = function() { return typeof(data.users) == 'string'; };

        ...
    }



Безопасно ли всегда использовать такой подход?
...
Рейтинг: 0 / 0
has own property & typeof
    #38112897
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, люди добрые есть ли смысл в проверке дополнительной?

Подход #1
Код: javascript
1.
2.
3.
4.
5.
6.
    function(data) {
        data.hasUserList = function() { return data.hasOwnProperty('users') && $.isArray(data.users); };
        data.hasDescription = function() { return data.hasOwnProperty('description') && (typeof(data.description) == 'string'); };

        ...
    }



Подход #2
Код: javascript
1.
2.
3.
4.
5.
6.
    function(data) {
        data.hasUserList = function() { return $.isArray(data.users); };
        data.hasDescription = function() { return typeof(data.description) == 'string'; };

        ...
    }



Безопасно ли всегда использовать такой подход?
...
Рейтинг: 0 / 0
has own property & typeof
    #38112996
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hasOwnProperty проверяет, есть ли свойство непосредственно в самом объекте (не заглядывая в прототип).

так что в #1 и #2 - разная логика.
...
Рейтинг: 0 / 0
has own property & typeof
    #38113272
scymaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч,

ну вот здесь data это аргумент callback функции в ajax запросе:
Код: javascript
1.
2.
3.
$.get(someUrl, function(data) {
...
});
...
Рейтинг: 0 / 0
has own property & typeof
    #38113879
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, смысла двойной проверки нет.
Что до первой строки, то $.isArray(obj), то код ее в jQuery следующий:
Код: javascript
1.
isArray:Array.isArray || function(obj){return jQuery.type(obj) === "array";}


то есть проверяется, не переопределен ли Array и равен ли тип объекта массиву. Так как подразумевается, что объект может быть или только объект (массив, другой объект или null) или undefined, то в любом случае будет сравнение типов и true будет только когда он будет массивом.

Со второй строкой тем более: если data.users == undefined, то будет и так false, равно как и при любом другом типе. Поэтому смысла делать проверку на наличие свойства в объекте.

Однако тут присутствует другой момент: в итоге и первая, и вторая строка используют функцию typeof, которая в JavaScript считается одной из самых "прожорливых" и медленных, а так как операции усливия в JavaScript лево-ассоциативны, то если не будет выполнена проверка первого условия - простой функции .hasOwnProperty(), то не будет затронута функция typeof(). Поэтому идеологически такая двойная проверка верна. Поэтому верны оба варианта.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / has own property & typeof
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]