問題:以下兩個示例的結果對象obj
是否有任何區別?使用構造函數創建對象vs封閉
閉合例子:
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
我明白,這是使用構造函數來創建對象的最佳做法,因爲這是它的根本目的,並且會將未來的代碼閱讀器混淆得更少我的問題目的是出於好奇。最終結果有什麼不同嗎?與物體,內存使用情況或其他內容一起使用?