These are chat archives for NodejsRUS/chat

30th
Jun 2015
Orel
@2byte
Jun 30 2015 07:29
hasOwnProperty() может принимать obj.ojb.ojb ?
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:04
@2byte, что значит "принимать obj.ojb.ojb"?
Orel
@2byte
Jun 30 2015 08:05
@seredenkov obj.hasOwnProperty('obj.obj.obj')
Андрей Листочкин (Andrey Listochkin)
@listochkin
Jun 30 2015 08:22
не может
Vladimir Kurchatkin
@vkurchatkin
Jun 30 2015 08:23
Почему? Принимать может
Андрей Листочкин (Andrey Listochkin)
@listochkin
Jun 30 2015 08:24
да, но не отработает как ожидаешь
хотя, смотря что ожидаешь
Orel
@2byte
Jun 30 2015 08:25
Конечно не срабатывает, я бы сюда не писал
Андрей Листочкин (Andrey Listochkin)
@listochkin
Jun 30 2015 08:25
o = { a: { b: 1 } }
o.hasOwnProperty('a.b’) ==> false
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:27
я так понял, что в этом вопросе, самое интересное в том, чего же ожидал @2byte от такого вызова hasOwnProperty() :)
Orel
@2byte
Jun 30 2015 08:30
@seredenkov ожидал те же действия что и от o.hasOwnProperty('a')
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:32
o = {"obj.obj.obj": 1, a: 2}
Object {obj.obj.obj: 1, a: 2}
o.hasOwnProperty('a') ==> true
o.hasOwnProperty('obj.obj.obj') ==> true
Orel
@2byte
Jun 30 2015 08:34
@seredenkov ты не понял
{
    "obj" : {
        "obj": {
               "obj": {}
         }
   }
}
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:36
в любом случае, hasOwnProperty() должен принимать строковое значение. Т.е. именно "obj.obj.obj" будет проверяться на наличие в объекте.
o = { a: { b: {c: "prop"} }, prop: "value" }; o.hasOwnProperty(o.a.b.c)
Orel
@2byte
Jun 30 2015 08:40
@seredenkov нет, так не работает if (group.hasOwnProperty(group.js.files)) {
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:42
group.js.files что в себе хранит?
если строковое значение, которое соответствует имени свойства объекта group, тогда будет работать.
Могу предположить, что таким способом ты хочешь проверять наличие свойств у вложенных объектов.
Orel
@2byte
Jun 30 2015 08:43
@seredenkov хранит объект
{ js: 
   { files: 
      [ 'js/jquery.min.js',
        'js/profile/work.js',
        'js/cookie.js',
        'js/profile/profile_beta.js' ],
     output: 'profile.js' },
  style: {} }
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:44
ну ведь hasOwnProperty ожидает от тебя строку, а ты подсовываешь объект
даже массив
Orel
@2byte
Jun 30 2015 08:45
@seredenkov помоему выше и так понятно что я хочу проверять
@seredenkov Ты мне показал такой пример выше, я так и попробовал.
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:46
ну в моем примере я передавал строку..
Orel
@2byte
Jun 30 2015 08:46
Проверяю так
if (group.hasOwnProperty('js')) {
            if (group.js.hasOwnProperty('files')) {
                groupJsFiles.push(group.js);
            }
        }
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:47
вместо вложенных if можно воспользоваться &&
Orel
@2byte
Jun 30 2015 08:47
@seredenkov что-то не видно что это строка
@seredenkov если js нету, то тогда и нету js.files отсюда вложенность
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:48
@seredenkov что-то не видно что это строка
o.hasOwnProperty(o.a.b.c) - тут не видно? так o.a.b.c содержит в себе строку "prop", я же объект описал: o = { a: { b: {c: "prop"} }, prop: "value" }
Orel
@2byte
Jun 30 2015 08:49
@seredenkov где кавычки
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:50
a: { b: {c: "prop"} - тут
я про эту вложенность:
if (group.hasOwnProperty('js')) && (group.js.hasOwnProperty('files')) {
groupJsFiles.push(group.js);
}
Orel
@2byte
Jun 30 2015 08:50
@seredenkov разве ошибки не будет при обращении к несуществующему group.js ?
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:51
так ты слева проверишь наличие именно group.js.
если проверка не пройдет, тогда group.js.hasOwnProperty не будет выполняться, и ошибки не будет
Orel
@2byte
Jun 30 2015 08:53
@seredenkov ок спс
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:53
не за что
Orel
@2byte
Jun 30 2015 08:54
@seredenkov я имел ввиду тут кавычки o.hasOwnProperty(o.a.b.c)
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:56
под ожиданием строки не имеется ввиду непосредственное наличие кавычек в параметре. Достаточно передать любую переменную содержащую строку.
я передал свойство вложенного объекта, которое сдержит строку.
Orel
@2byte
Jun 30 2015 08:58
This message was deleted
Alexandr Seredenkov
@seredenkov
Jun 30 2015 08:59
@2byte в моем случае console.log(o.a.b.c) вернет "prop", и hasOwnProperty будет проверять наличие именно свойства prop
только в моем примере с "&&" скобки после if поставить надо правильно, чтобы ошибки небыло
if ( && ) {
Orel
@2byte
Jun 30 2015 09:07
А кто со знанием js перелез на ноду ?
Orel
@2byte
Jun 30 2015 09:40
switch в цикле for, break остановит все последующие итерации ?
Alexandr Seredenkov
@seredenkov
Jun 30 2015 09:54
@2byte, break завершает текущую конструкцию. Т.е. если break внутри switch, который внутри for, то будет прервана только switch.
Vladimir Kurchatkin
@vkurchatkin
Jun 30 2015 09:56
для этого есть лэйблы
Orel
@2byte
Jun 30 2015 10:12

У меня тут такая проблема

var groupJsFiles = [];

groupJsFiles.push(group.js);

// На выходе
console.log(groupJsFiles);
// { js: [ { files: [Object], output: 'profile.js' } ], css: [] }

В groupJsFiles вставляются объекты, а он их оборачивает в массив

"js" : {
            "files" : [
                "js/jquery.min.js",
                "js/profile/work.js",
                "js/cookie.js",
                "js/profile/profile_beta.js"
            ],
            "output": "profile.js"
        },