Я написал файл JavaScript с именем global.js, который имеет следующее содержание:Объект не определен или нулевой
;
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);
});
Однако, когда я г un code, он сообщает мне, что Globals
не определено.
ОБНОВЛЕНИЕ Спасибо, все. Я только заметил, что я забыл знак равенства (оператор присваивания) для одного.
Еще одна важная вещь, которую я наблюдаю сейчас (который я не был полностью уверен) это: Я предполагаю, что из ваших комментариев, что описание объекта следующим образом:
var foo = { /* cannot have anything that does not adhere to the bar : gar syntax? */ }
ДРУГОЙ UPDATE Вещь : если я сделал appRoot
метод, при этом:
var Globals =
{
appRoot : function() { }
};
или вот так:
var Globals =
{
appRoot : function getAppRoot() { }
}
Клиент должен будет вызвать appRoot
с набором следующих скобок. Я бы хотел, чтобы для appRoot
было свойство вместо метода. Как мне это сделать?
FINAL UPDATE теперь я изменил свой код следующим образом:
// 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);
Я получаю предупредительное сообщение Глобалы является либо неопределенным или нулевым.
ANSWER ОК, наконец. Спасибо за вашу помощь. У меня была еще одна незначительная синтаксическая ошибка в объявлении объекта/инициализации объекта Globals
.
С appRoot
был членом объекта, и я использовал синтаксис инициализатора объекта, я не должен был прервать объявление appRoot
с точкой с запятой. Вместо этого я должен был либо использовать запятую, либо просто оставить ее без какого-либо завершающего символа, так как это был последний (и единственный член Globals
).
не очень похожи на JavaScript. –
В коде есть несколько синтаксических ошибок.Если вы посмотрите на консоль JavaScript в своем браузере (если у вас ее нет, используйте более современный браузер :-)), вы увидите различные сообщения, указывающие на ошибки. * Редактировать: даже по вашему праву сейчас. * –
* «' var foo = {/ * не может иметь ничего, что не прилипает к бару: синтаксис gar? * /} '" * Исправить. Он называется инициализатором * объекта * (иногда «объектным литералом»), подробнее в [spec] (http://www.ecma-international.org/ecma-262/5.1/#sec-11.1.5). –