变量“未定义”错误,为什么

时间:2011-04-18 08:00:34

标签: javascript-events javascript

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

myobj.js

MyObj={

  test: {
     value: {a: 10, b: 7},

     startTest: function(){
         var x = this.value.a;
         var y = this.value.b;
         return {x: x, y: y};
     }
  }
}

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

other.js

mytest = MyObj.test.startTest //assign starTest function to mytest
var a = mytest().x;
var b = mytest().y;

我的index.html:

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

我在 myobj.js 中收到了来自firebug的错误:

  

this.value未定义   第“this.value.a;”行

为什么?

1 个答案:

答案 0 :(得分:5)

mytest = MyObj.test.startTest

这为您提供了一个没有上下文的功能。如果您直接调用此函数,则thiswindow

您想要所有test.startTest(),以便thistest

An excellent guide on this