我正在尝试找出创建对象新实例的最有效方法。
当我开始的时候,我使用了这样的东西:
var Foo = function(a, b, c)
{
this.a = a;
this.b = b;
this.c = c;
}
Foo.prototype.func = function()
{
// Do stuff;
}
var bar = new Foo(1, 2, 3);
bar.func();
后来我听说最好跳过原型(prototype),因为新的原型(prototype)会耗尽不需要的内存,得到这样的东西:
var Foo = function(a, b, c)
{
return {
a:a,
b:b,
c:c,
func:function()
{
// Do stuff;
}
}
}
var bar = Foo(1, 2, 3);
bar.func();
但是,现在我遇到了在调用 Foo 的多个实例时多次创建相同的 func 的问题...那么...
var Foo = {
a:null,
b:null,
c:null,
func: function()
{
// Do stuff;
}
}
function newFoo(a, b, c)
{
var tmp = function(){};
var obj = new tmp();
obj.prototype = Foo;
obj.a = a;
obj.b = b;
obj.c = c;
return obj;
}
var bar = newFoo(1, 2, 3);
bar.func();
但现在我得到了原型(prototype)......
我在这里寻找速度,这是我主要关心的问题。所涉及的对象并不太复杂,主要是一堆属性和函数。可以快速创建和销毁对象(这就是速度很重要的原因)
谁知道最有效的方法是这个?
最佳答案
别担心,原型(prototype)显然是创建对象最快的方法。 http://jsperf.com/object-creation-efficiency至少在 Google Chrome Canary 上,它比创建新对象快 2%。
原型(prototype)更快的浏览器
- Chrome 金丝雀 19.0.1056.0
- 火狐 10.0.2
创建新对象速度更快的浏览器
- Chrome 17.0.963
关于javascript - 创建一个新的JS对象实例的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9517877/