【发布时间】:2017-09-20 21:45:50
【问题描述】:
问题:下面两个示例的结果对象obj 有什么不同吗?
闭包示例:
var myClosure = function(paramId) {
return {
Id : paramId,
getId : function() {console.log(this.Id)},
setId : function(sId) {this.Id = sId}
};
}
var obj = myClosure(2);
obj.getId();//outputs 2
obj.setId(5);
obj.getId();//outputs 5
构造函数示例:
var MyConstr = function(Id)
{
this.Id = Id;
this.getId = function() { console.log(this.Id)};
this.setId = function(sId) {this.Id = sId};
}
var obj = new MyConstr(2);
obj.getId();//outputs 2
obj.setId(5);
obj.getId();//outputs 5
我知道使用构造函数创建对象是最佳实践,因为这是它的基本目的,并且不会让未来的代码读者感到困惑。我在这里提问的目的是出于好奇。最终结果有什么不同吗?是对象,还是内存使用,还是其他什么?
【问题讨论】:
标签: javascript object constructor closures