2014-10-04 87 views
-1

我想设置一个属性,我还没有创建一个对象。它似乎并不想让我在飞行中添加属性,而且它必须以这种方式完成。为什么我收到错误:不能在未定义的对象上设置属性

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

我不明白为什么我不能上动态变量someItem设置属性。当我想要一个对象(在这种情况下为someItem)时,我可以添加任何我想要的Javascript的全部内容吗?

这里是我的代码:

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 someItemundefined在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> 
相关问题