document.getElementById('menu-ic').addEventListener('click', function(evt) {
document.getElementById('menu-hidden').style.left = '0';
document.getElementById('l1').style.cssText = 'background-color: #000000;width:0px;';
document.getElementById('l2').style.cssText = 'background-color: #000000;width:26px;';
document.getElementById('l3').style.cssText = 'background-color: #000000;width:0px;';
if (document.getElementById('menu-hidden').style.left = '0') {
document.getElementById('menu-ic').addEventListener('click', function(evt) {
document.getElementById('menu-hidden').style.left = '-300px';
document.getElementById('l1').style.cssText = 'width:20px;';
document.getElementById('l2').style.cssText = 'width:24px;';
document.getElementById('l3').style.cssText = 'width:22px;';
});
}
});
是否有可能只有一个对象?我想拥有私人领域,但同时还有更多只有一个对象?
答案 0 :(得分:0)
是的,通过放弃IIFE调用以获得正常功能,可以轻松实现。只有它被称为工厂模式然后,不再是模块。
function factory() {
var sum = 0;
return {
add: function () {
sum = sum + 1;
return sum;
}
}
}
var c = factory();
c.add(); // 1
var d = factory();
d.add(); // 1
console.log(c.add()); // logs: 2
答案 1 :(得分:-1)
您可以使用模块模式创建工厂,该工厂使用模块模式创建更多对象。使用您的原始示例,它看起来像这样:
var moduleFactory = (function() {
return {
create: function() {
return (function() {
var sum = 0;
return {
add: function() {
sum = sum + 1;
return sum;
}
}
})();
}
}
}
)();
var c = moduleFactory.create();
console.log(c.add()); //1
var d = moduleFactory.create();
console.log(d.add()); //1