JavaScript对象的内存消耗
有一些代码,我想知道,在这种情况下,内存经济会发生吗JavaScript对象的内存消耗,javascript,Javascript,有一些代码,我想知道,在这种情况下,内存经济会发生吗 var Person = { getName: function(){ return this.name; }, bigMethod: function(){ // here some large code } }; var createPerson = function(obj){ var person = {}; person.getName = function(){ re
var Person = {
getName: function(){
return this.name;
},
bigMethod: function(){
// here some large code
}
};
var createPerson = function(obj){
var person = {};
person.getName = function(){
return Person.getName.call(obj);
};
person.bigMethod =function(){
return Person.bigMethod.call(obj);
};
return person;
}
var persons = [];
for (var i =0; i < 1000; i++){
persons.push(createPerson({name:'Gregory'}));
}
var-Person={
getName:function(){
返回此.name;
},
bigMethod:function(){
//这里有一些大代码
}
};
var createPerson=函数(obj){
var person={};
person.getName=函数(){
返回Person.getName.call(obj);
};
person.bigMethod=函数(){
返回Person.bigMethod.call(obj);
};
返回人;
}
var人员=[];
对于(变量i=0;i<1000;i++){
push(createPerson({name:'Gregory'}));
}
或者原则上,我可以这样做:
var createPerson = function(obj){
var person = {};
person.getName = function(){
return obj.name;
};
person.bigMethod = function(){
// here some large code
};
return person;
}
var persons = [];
for (var i =0; i < 1000; i++){
persons.push(createPerson({name:'Gregory'}));
}
var createPerson=函数(obj){
var person={};
person.getName=函数(){
返回obj.name;
};
person.bigMethod=函数(){
//这里有一些大代码
};
返回人;
}
var人员=[];
对于(变量i=0;i<1000;i++){
push(createPerson({name:'Gregory'}));
}
在第一种情况下,我在一个单独的Person对象中移动了一个假设方法的实现,并在createPerson中调用它。
在第二种情况下,我只是使用必要的方法创建一个对象并返回该对象。在这两种情况下,每次构造新对象时都会创建不必要的新函数。您可以使用
Person
对象作为中的原型。为什么不使用基于原型的“类”?这里只声明一次函数。在你的两个例子中,你都在为每个人创建新的功能。“内存经济发生”是什么意思?为什么需要这样绝对的“封装”?你真的有铁一般的理由“需要”这个吗?@Cfon是的,这是封装数据对象的正确方法,不,这不是内存友好型的(但对于仅仅1000个对象来说并不重要),而且不管你是将实现放在单独的对象中还是直接放在闭包中,都没有任何区别。