无法在未定义的对象上设置属性

时间:2014-10-04 05:54:39

标签: javascript

我正在尝试在尚未创建的对象上设置属性。它似乎不想让我动态添加属性,它必须以这种方式完成。为什么我收到错误:

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();
}

3 个答案:

答案 0 :(得分:2)

如果初始化时没有为其分配值,则默认情况下,您需要将第一行更改为此var someItem = {};,因为变量为undefined。并且undefined不是要使用属性设置的对象,因此也是错误。

答案 1 :(得分:2)

在JS中声明为someItem时,{p> var someItemundefined。将声明更改为 var someItem = {};

答案 2 :(得分: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>