我编写了一个名为 global.js 的 JavaScript 文件,其内容如下:
;
var Globals =
{
function getAppRoot() {
if (typeof (jQuery) !== "undefined")
return $("#ApplicationRoot").attr("href");
};
appRoot : getAppRoot();
};
然后在我的 HTML 文件(ASP.NET MVC 项目)中,我包含了我的 JavaScript 文件,如下所示:
<link rel = "home" id = "ApplicationRoot"
href = "@Url.Content("~/")" />
<script src = "@Url.Content("~/Scripts/jquery-1.8.3.js")"
type="text/javascript"></script>
<script src = "@Url.Content("~/Scripts/global.js")"
type = "text/javascript"></script>
然后,在 HTML 文件中,在 SCRIPT 标记内,我写道:
$(document).ready(
function() {
alert("Globals.appRoot = " + window.Globals.appRoot);
} );
但是,当我运行代码时,它告诉我这Globals
是未定义的。
更新 谢谢大家。我只是注意到我忘记了一个等号(赋值运算符)。
我现在观察到的另一件重要的事情(我不完全确定)是:我从您的评论中假设对象声明如下:
var foo = { /* cannot have anything that does not adhere to the bar : gar syntax? */ }
另一个更新
事情是:如果我appRoot
这样做了一个方法:
var Globals =
{
appRoot : function() { }
};
或者像这样:
var Globals =
{
appRoot : function getAppRoot() { }
}
客户端必须appRoot
使用一组以下括号进行调用。我想appRoot
成为一个属性而不是一个方法。我怎么做?
最终更新 我现在已将代码更改为如下所示:
// globals.js
// I understand that the starting semi-colon is not
// required. I'd left it in for reasons that it is used
var Globals =
{
appRoot : $("#ApplicationRoot").attr("href");
};
// inside the HTML file in $(document).ready();
if (tyepof(Globals) == "undefined" || Globals == null)
alert("Globals is either undefined or null");
else
alert("Globals.appRoot = " + Globals.appRoot);
我收到警报消息Globals is either undefined or null。
回答
好的,最后。感谢你的帮助。我在对象的对象声明/初始化中遇到了另一个小语法错误Globals
。
由于appRoot
是对象的成员,并且我使用的是对象初始化器语法,因此我不应该appRoot
用分号终止声明。相反,我应该要么使用逗号,要么不使用任何终止字符,因为它是最后一个(也是 的唯一成员Globals
)。