2014-10-04 4 views
-1

Я пытаюсь установить свойство для объекта, который я еще не создал. Кажется, он не хочет позволять мне добавлять свойства «на лету», и это должно быть сделано таким образом. Почему я получаю сообщение об ошибке:Не удается установить свойство на неопределенный объект

TypeError: 'undefined' is not an object (evaluating 'someItem.anotherProperty = "someOtherValue"') 

Я не понимаю, почему я не могу динамически задать свойства переменной someItem. Разве не весь смысл Javascript, что я могу добавить все, что захочу, когда захочу для объекта (в данном случае someItem)?

Вот мой код:

testObject = function() { 
    var someItem; 
    someItem.anotherProperty = "someOtherValue"; 

    function doStuff() { 
     someItem.someProperty = "someValue"; 
    } 

}; 

function start() { 
    item = new testObject(); 
    item.doStuff(); 
} 

ответ

2

Вы должны изменить первую строку в этом var someItem = {}; как переменные undefined по умолчанию, если значения не присвоены им при инициализации. И undefined не является объектом, который должен быть задан со свойствами и, следовательно, ошибкой.

2

someItem если указано как var someItem есть undefined in JS. Измените объявление в var someItem = {};

1

изменения var someItem; в var someItem = {};

<html> 
    <head> 
     <script type="text/javascript"> 

      testObject = function() { 

       var someItem = {}; //changed 

       someItem.anotherProperty = "someOtherValue"; 

       function doStuff() { 

        someItem.someProperty = "someValue"; 

       }; 

      }; 

      function start() { 

       item = new testObject(); 

       item.doStuff(); 

      } 

     </script> 
    </head> 

    <body onload="start();"></body> 
</html> 
Смежные вопросы