我刚刚了解了模块模式。我已经编写了一些足够复杂的代码,以至于我想测试一个功能。问题是,我不知道如何模拟一个值。接下来是coffeescript,但我会将生成的javascript放在下面,以便获得更多帮助。这是我的测试,它试图模拟一个名为 的字段state
,但它总是打印“未定义”:
root = exports ? this
root.test3 = (->
root.test2.state = "abc"
root.test2.doSomething()
return {}
)()
这里是 test2 ,出于这个问题的目的,可以将其视为生产代码:
root = exports ? this
root.test2 = (->
state = undefined
doSomething = -> alert state
return {
state: state
doSomething: doSomething
}
)()
这是我在其中运行的 html,但我认为这并不重要:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>TEST2</title>
<script src="test2.js" type="text/javascript"></script>
<script src="test3.js" type="text/javascript"></script>
<style>
canvas {
border: 1px solid black;
}
</style>
</head>
<body>
<h1>This is a test</h1>
</body>
</html>
Javascript中的test2:
var root;
root = typeof exports !== "undefined" && exports !== null ? exports : this;
root.test2 = (function() {
var doSomething, state;
state = void 0;
doSomething = function() {
return alert(state);
};
return {
state: state,
doSomething: doSomething
};
})();
Javascript中的test3:
var root;
root = typeof exports !== "undefined" && exports !== null ? exports : this;
root.test3 = (function() {
root.test2.state = "abc";
root.test2.doSomething();
return {};
})();
正如我所说,运行此警报undefined
。我希望它输出“abc”。我怎样才能做到这一点?