我有一个遵循模块模式的Javascript对象
var foo = (function() {
var obj = (function() {
var $button = $('#myButton');
var init = function() {
$button.hide();
};
return {
init: init
};
})();
return { obj: obj };
})();
如果我拨打foo.obj.init()
,则应隐藏按钮,但不会发生这种情况。
我在这里看到了关于将一个元素赋值给变量的不同问题,但我认为问题在于该对象。我无法从公共方法访问私有变量吗?
答案 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 };
})();