https://jsfiddle.net/4qv24djp/1/
var module_pattern = (function() {
var private = 'private';
a: function() {
console.log('function a and the private variable is ' + private);
},
b: function() {
}
return {
a: a
}
})();
module_pattern.a();
上述代码有什么问题?我希望它会打印功能a
答案 0 :(得分:0)
您需要将变量和函数声明为变量='变量'而不是变数:变量。
var module_pattern = (function() {
var private = 'private';
var a = function() {
console.log('function a and the private variable is ' + private);
};
var b = function() {
};
return {
a: a
}
})();
module_pattern.a();

答案 1 :(得分:-1)
您使用:
声明了变量,而您需要使用=
。冒号仅在对象声明中使用。您也没有使用;
但,
结束该行。变量a
和b
前面需要var
。否则,它们将是全局可访问的,这正是您不希望使用模块化模式的。
查看工作小提琴:https://jsfiddle.net/4qv24djp/3/
var module_pattern = (function() {
var private = 'private';
var a = function() {
console.log('function a and the private variable is ' + private);
};
var b = function() {
};
return {
a: a
}
})();
module_pattern.a();
您也可以直接返回对象中的函数:
var module_pattern = (function() {
var private = 'private';
return {
a: function() {
console.log('function a and the private variable is ' + private);
},
b: function() {
}
};
})();
module_pattern.a();