【问题标题】:Why did I get "Undefined" message?为什么我会收到“未定义”消息?
【发布时间】:2011-08-07 16:14:59
【问题描述】:

我在一个js文件中定义了一个对象:

myobj.js

MyObj={
  test: {
     startTest: function(){
         var x = SOME_PROCESS_A;
         var y = SOME_PROCESS_B;
         return {x: x, y: y};
     }
  }
}

在另一个js文件中我调用了这个对象函数:

other.js

var mytest = MyObj.test.startTest
var a = mytest.x;
var b = mytest.y;

我的 index.html:

<body>
 <script src="myobj.js"></script>
 <script src="other.js"></script>
</body>

我在 other.js 中收到来自 firebug 的错误,“mytest”在“var a = mytest.x;”行中未定义 为什么??

谢谢大家。我在类似代码中遇到了另一个“未定义”问题,请查看here

【问题讨论】:

  • 你应该像函数一样使用它:var mytest = MyObj.test.startTest()

标签: javascript javascript-framework


【解决方案1】:

你忘记调用函数了:

var mytest = MyObj.test.startTest()

【讨论】:

    【解决方案2】:

    因为 mytest 是一个函数对象,其中没有定义任何属性。

    你可以这样称呼它

    MyObj.test.startTest();
    

    或重写您的对象,例如:

    MyObj={
      test: {
         startTest: function(){
             this.x = SOME_PROCESS_A;
             this.y = SOME_PROCESS_B;
             return {x: this.x, y: this.y};
         }
      }
    }
    

    【讨论】:

    • “因为 mytest 是一个函数对象,它没有属性” 函数确实有属性,你甚至可以添加自己的属性。但是,特别是在这种情况下,此特定函数没有 xy 属性。
    • 是的,我的意思是这个特殊的功能。我会更正我的答案,谢谢;)
    • 谢谢,但我遇到了另一个未定义的错误,这里:stackoverflow.com/questions/5700054/…
    【解决方案3】:

    我想你是故意的

    var mytest = MyObj.test.startTest(); //calls the function and returns the value to mytest
    

    而不是

    var mytest = MyObj.test.startTest;//assigns the function to mytest
    

    【讨论】:

    • 谢谢。但我遇到了另一个未定义的错误,这里是stackoverflow.com/questions/5700054/…
    • @Mellon,您不应该发布新问题。它可能会作为重复关闭。更新这个问题
    猜你喜欢
    • 2012-06-13
    • 2019-08-11
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2012-01-30
    • 2020-01-17
    相关资源
    最近更新 更多