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

时间:2015-06-12 07:00:28

标签: javascript jquery

在下面的代码中,我试图访问一个设置在我的JavaScript项目/ objects / app中的页面HTML中的变量。

current_user是全局变量。

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

代码如下所示,JSFiddle在这里:http://jsfiddle.net/jasondavis/Ly8hongf/

我似乎无法在我的应用内访问它,请帮忙吗?

<script type="text/javascript">
var current_user = {
   userid: '123456789',
   name: 'Jason Davis',
   avatar: 'Jason Davis avatar img URL',
}
</script>

删除了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));

2 个答案:

答案 0 :(得分:3)

在您的代码中,您可以:

var $window = $(window)

...然后您尝试访问current_user的目的是:

var current_user = $window.current_user;

但是$window是一个jQuery对象。全局变量是window的属性,而不是jQuery对象。你只想要window

var current_user = window.current_user;
// No $ -----------^

或者,我只是为局部变量使用不同的名称,并利用current_user是全局的事实:

var user = current_user;

如果不在本地声明,您就不会影响它,因此您可以访问全局。

答案 1 :(得分:1)

有两个问题

  1. 不要使用jquery包装的窗口对象。使用window代替$window
  2. 由于当前用户存储为JSON。无需使用JSON.Parse
  3. 再次解析它

    修正了JDFiddle http://jsfiddle.net/Ly8hongf/3/