【发布时间】:2012-03-07 10:47:00
【问题描述】:
我用这个示例在 SO 中回答了一个关于闭包的问题:
function Constructor() {
var privateProperty = 'private';
var privateMethod = function(){
alert('called from public method');
};
return {
publicProperty: 'im public',
publicMethod: function(){
alert('called from public method');
},
getter: privateMethod
}
}
var myObj = new Constructor();
//public
var pubProp = myObj.publicProperty;
myObj.publicMethod();
myObj.getter();
//private - will cause errors
myObj.privateProperty
myObj.privateMethod
一位用户评论我的回答说:
此外,如果您的函数显式返回一个对象,则使用 new 调用它不是一个好习惯,因为这会产生误导 - 如果使用 new 您希望结果是 Constructor 的实例
我通常使用 new 创建对象。但为什么它不是一个好习惯?似乎使用 new 和不使用 new 返回相同的东西。从闭包创建对象的正确方法是什么?
【问题讨论】:
标签: javascript closures