我决定用javascript“更深入”,在ECMA6之前尝试掌握ECMA5技能,现在我被对象创建和初始化所困扰,什么版本更好,更实用,更好读等等。坚持使用哪一个作为基础。所以我尝试了什么:
版本 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 版,这对我来说最糟糕,语法困难,错误空间更大,我什至不确定它是否正确编写
(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);
})();