将元素分配给变量

时间:2015-01-07 17:27:02

标签: javascript jquery

我有一个遵循模块模式的Javascript对象

var foo = (function() {
     var obj = (function() {
         var $button = $('#myButton');

         var init = function() {
            $button.hide();
         };

         return {
            init: init
         };
     })();

    return { obj: obj };
})();

如果我拨打foo.obj.init(),则应隐藏按钮,但不会发生这种情况。

我在这里看到了关于将一个元素赋值给变量的不同问题,但我认为问题在于该对象。我无法从公共方法访问私有变量吗?

1 个答案:

答案 0 :(得分:1)

来自我的评论:

  

将它作为init的一部分...你可以声明var以隔离范围,然后修改它以实际设置按钮作为init的一部分

示例:

var foo = (function() {
     var obj = (function() {
         var $button; //$('#myButton');

         var init = function() {
            if (typeof $button === 'undefined') {
                // i would probably make the selector an argument to `init`
                // if i were you.
                $button = $('#myButton');
            }
            $button.hide();
         };

         return {
            init: init
         };
     })();

    return { obj: obj };
})();