在我的JavaScript对象中访问页面全局JavaScript变量?

在我的JavaScript对象中访问页面全局JavaScript变量?,javascript,jquery,Javascript,Jquery,在下面的代码中,我试图访问一个变量,该变量设置在JavaScript项目/对象/应用程序的HTML页面中 当前用户是全局变量 页面HTML JSON设置为JavaScript全局变量: (function (window, document, $, undefined) { "use strict"; //we cache a few useful values, like jQuery wrapped window and document var $window =

在下面的代码中,我试图访问一个变量,该变量设置在JavaScript项目/对象/应用程序的HTML页面中

当前用户
是全局变量

页面HTML JSON设置为JavaScript全局变量:

(function (window, document, $, undefined) {
    "use strict";

    //we cache a few useful values, like jQuery wrapped window and document
    var $window = $(window),
      $document = $(document),

    projectTaskModal = {

        init: function() {
            // init code and functions ran
            this.initCurrentUser();
        },

        // Get Global current_user variable JSON and convert to 
        // local Object Properties in our app
        initCurrentUser: function() {
            console.log('ProjectTaskModal initCurrentUser() Function Ran');

            // get JSON from GLOABL current_user var
            var current_user = $window.current_user;
            // also tried:
            // var current_user = current_user;

            // assign Global JSON into local app JS Object properties            
            var userObj = JSON && JSON.parse(current_user) || $.parseJSON(current_user);

            console.log('userObj.userid', userObj.userid);
            console.log('userObj.name', userObj.name);
            console.log('userObj.avatar', userObj.avatar);

        },

    };

    // Run Init on DOM Ready
    $(function() {
        projectTaskModal.init();
    });

}(this, document, jQuery));
代码如下所示,JSFIDLE如下所示:

我似乎无法在我的应用程序中访问它,请帮助

<script type="text/javascript">
var current_user = {
   userid: '123456789',
   name: 'Jason Davis',
   avatar: 'Jason Davis avatar img URL',
}
</script>
在代码中,您执行以下操作:

var $window = $(window)
…然后您尝试访问当前用户的尝试是:

var current_user = $window.current_user;
但是
$window
是一个jQuery对象。全局变量是
窗口的属性,而不是jQuery对象。您只需要
窗口
就可以了

var current_user = window.current_user;
// No $ -----------^
或者,我会为局部变量使用不同的名称,并利用
current\u user
是全局变量这一事实:

var user = current_user;
通过不在本地声明,您就不会对其进行阴影处理,因此您可以访问全局文件。

在您的代码中,您可以:

var $window = $(window)
…然后您尝试访问当前用户的尝试是:

var current_user = $window.current_user;
但是
$window
是一个jQuery对象。全局变量是
窗口的属性,而不是jQuery对象。您只需要
窗口
就可以了

var current_user = window.current_user;
// No $ -----------^
或者,我会为局部变量使用不同的名称,并利用
current\u user
是全局变量这一事实:

var user = current_user;
通过不在本地声明,您就不会对其进行跟踪,因此您可以访问全局

  • 不要使用jquery包装的窗口对象。使用
    window
    而不是
    $window
  • 因为当前用户存储为JSON。无需使用
    JSON.parse再次解析它
  • 修复了JDFIDLE

    有两个问题

  • 不要使用jquery包装的窗口对象。使用
    window
    而不是
    $window
  • 因为当前用户存储为JSON。无需使用
    JSON.parse再次解析它

  • 修复了jddle

    谢谢!我没有想到要预先设置
    窗口。
    即使我;我已经看过无数次了!再次感谢你,虽然我已经讲了半个小时了!谢谢我没有想到要预先设置
    窗口。
    即使我;我已经看过无数次了!再次感谢你,虽然我已经讲了半个小时了!