0

我决定用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);
})();
4

1 回答 1

1

对于简单的对象,我喜欢保持简单

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

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

如果您使用对象的许多实例,那么使用原型会更快

Magic = function() {
};

Magic.prototype.doStuff = function() {
    alert('Wow!');
};
于 2016-04-28T10:49:16.580 回答