2016-04-28 118 views
0

我决定用JavaScript来“更深入”,并且在ECMA6之前尝试掌握ECMA5技巧,现在我被对象创建和初始化困住了,什么版本更好,更实用,更好阅读等。 哪一个坚持并用作基础。那么什么,我尝试:JavaScript和对象初始化

版本1,并且是最流行的谷歌搜索

;(function() { 
    var magic = magic || {}; 

    magic.doStuff = function() { 
     alert('Magic'); 
    }; 

    window.magic = magic; 
    document.addEventListener('DOMContentLoaded', function() { 
     magic.doStuff(); 
    }, false); 

})(); 

2版,颇有为第1版,只是一点点不同的语法相同发现导游

(function() { 
    var magic = { 
     doStuff: function() { 
      alert('Magic'); 
     } 
    }; 

    document.addEventListener('DOMContentLoaded', function() { 
     magic.doStuff(); 
    }, false); 
})(); 

版本3,这一个对我来说是最糟糕的,语法困难,错误空间更大,我甚至不确定它是否写得相关ctly

(function() { 
    var magic = (function() { 
     magic.doStuff = function() { 
      alert('Wow!'); 
     }; 

     return magic; 
    }); 

    document.addEventListener('DOMContentLoaded', function() { 
     (new magic()).doStuff(); 
    }, false); 
})(); 

4版,这是一个由资深开发出对我来说,没有导游这么流行,或者它只是我没有注意到这一点,但一些解释后,可能是我的最爱。

(function() { 
    var magic = (function() { 
     function publicDoStuff() { 
      alert('Magic'); 
     } 

     return { 
      doStuff: publicDoStuff 
     }; 
    })(); 

    document.addEventListener('DOMContentLoaded', function() { 
     magic.doStuff(); 
    }, false); 
})(); 
+0

版本1,2,3混合起来'魔术“和”魔术“。 – str

+0

修正了,谢谢 – MyMomSaysIamSpecial

回答

1

我喜欢保持简单简单对象

var magic = { 
    doStuff: function() { 
     alert('Wow!'); 
    }, 
}; 

document.addEventListener('DOMContentLoaded', function() { 
    magic.doStuff(); 
}, false); 

如果你使用一个对象的多个实例,然后its faster to use prototype

Magic = function() { 
}; 

Magic.prototype.doStuff = function() { 
    alert('Wow!'); 
};