无法从 javascript 访问对象

Cannot acces object from javascript

在我的 ASP.NET MVC 应用程序中,在 ..\Views\Shared_Layout.cshtml 中,我有以下代码行:

> <script type="text/javascript" src="http://mycontrols.com/Scripts/MyConstants.js"></script>

文件 MyConstants.js 包含以下内容:

var MyConstants = function() {
   return {
       DataObject1: {
          MyEnum1: {
             Item0: 0,
             Item1: 1,
             Item3: 2
          }
       },
       DataObject2: {
          MyEnum2: {
             Item0: 0,
             Item1: 1,
             Item3: 2
          }
       }
   };
};

现在从我的观点 (Index.cshtml) 我正在尝试在 javascript 中访问 MyEnum1 中的项目:

var myEnum = MyConstants.DataObject1.MyEnum1.Item1;

但它不起作用,在 chrome 中的 en devtools 错误下方:

jQuery.Deferred exception: Cannot read property 'MyEnum1'of undefined TypeError: Cannot read property 'MyEnum1' of undefined

MyConstants是一个函数,returns是一个对象,所以你需要调用它:

var myEnum = MyConstants().DataObject1.MyEnum1.Item1; 

如果您希望保留当前语法来检索值,则需要将 MyConstants 转换为对象:

var MyConstants = {
  DataObject1: {
    MyEnum1: {
      Item0: 0,
      Item1: 1,
      Item3: 2
    }
  },
  DataObject2: {
    MyEnum2: {
      Item0: 0,
      Item1: 1,
      Item3: 2
    }
  }
};