Javascript 文本对象和函数构造函数

Javascript 文本对象和函数构造函数,javascript,function,object-literal,function-prototypes,Javascript,Function,Object Literal,Function Prototypes,我参加了这项测试,并在FF6、Opera 10、IE8上赢得了Literal的胜利,但在Chrome 13.0.782.112上函数的速度更快,那么使用哪种方法更好呢 var A = { aa : function(){ var i, j=[]; var arr = ['Literal', 'Function']; for (i = 0; i < arr.length; i++){ j[i] = arr[i];

我参加了这项测试,并在FF6、Opera 10、IE8上赢得了Literal的胜利,但在Chrome 13.0.782.112上函数的速度更快,那么使用哪种方法更好呢

var A = {
    aa : function(){
        var i, j=[];
        var arr = ['Literal', 'Function'];
        for (i = 0; i < arr.length; i++){
            j[i] = arr[i];
        }
       return j[0];
    }
};
var A1 = A;
var A2 = A1;
A1.foo = ' Test';
alert(A1.aa() + A2.foo);

//Function test
function B(){
    this.bb = function(){
        var i, j=[];
        var arr = ['Literal', 'Function'];
        for (i = 0; i < arr.length; i++){
            j[i] = arr[i];
        }
        return j[1];
    }
}
var B1 = new B();
var B2 = new B();
B.prototype.foo = ' Test';
alert(B1.bb() + B2.foo);
var A={
aa:函数(){
var i,j=[];
var arr=['Literal','Function'];
对于(i=0;i
您喜欢哪一种。速度永远不应该成为一个问题,除非它在你的应用程序中成为一个真正的问题。对我来说,你所做的看起来像是过早的优化,这是浪费时间。等到需要优化代码时,再优化需要返工的部分。这是微不足道的。

Chrome使用了一个名为
隐藏类的优化功能,它可以更快地访问对象成员


我敢打赌,只有通过
new
构建对象时,才会启用此优化,因此,通过
new
构建的对象比未通过
new
构建的对象具有更快的成员访问速度。根据统计,chrome拥有约17%的市场份额。因此,请使用文字。

说实话,我发现最好的是混合:

function C() {
    var i, j = [],
        foo;

    return {
        bb: function() {

            var arr = ['Literal', 'Function'];
            for (i = 0; i < arr.length; i++) {
                j[i] = arr[i];
            }
            return j[1];
        },
        setFoo: function(val) {
            foo = val;
        },
        getFoo: function() {
            return foo;
        }
    }
}
var C1 = C();
var C2 = C();
C2.setFoo(' Test');
console.log(C1.bb(), C2.getFoo());
函数C(){
变量i,j=[],
傅;
返回{
bb:函数(){
var arr=['Literal','Function'];
对于(i=0;i
我怀疑你是否会采取足够密集的措施,使差异变得重要


函数式构造函数为您提供了私有变量选项,这很好。

我检查并测试了您对jsperf的修订,这肯定是一个不错的方法,但我认为literal是一个不错的选项,就像Crockford的奖金建议一样