2011-04-18 61 views
0

我曾经在一个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

this.value” 是不在 行定义this.value.a;

为什么?

+0

可能重复[为什么我得到 “未定义” 的错误?(http://stackoverflow.com/questions/5699861/why- i-got-undefined-error) – Mat 2011-04-18 08:05:06

+0

不,与我以前的帖子不一样 – Mellon 2011-04-18 08:05:42

+0

这是个人喜好:我不喜欢你如何声明MyObj。我更喜欢“函数MyObj(){[...]}”。 startTest内部函数相同:I优先使用“this.startTest = function(){[...]}”。这些是更“标准”的方式。请参阅此StackOverflow问题,并提供非常好的答案:http://stackoverflow.com/questions/1595611/how-to-properly-create-a-custom-object-in-javascript – dmarucco 2011-04-18 08:07:53

回答

5

mytest = MyObj.test.startTest

这给你没有上下文的功能。如果您直接调用此函数,则thiswindow

要将所有test.startTest()使thistest

An excellent guide on this