JavaScript和对象初始化

时间:2016-04-28 10:19:37

标签: javascript ecma

我决定用javascript“深入”,在ECMA6尝试掌握ECMA5技能之前,现在我坚持使用对象创建和初始化,什么版本更好,更实用,更好阅读等等。 哪一个坚持并用作基础。所以我尝试了:

版本1 ,并且在google搜索指南中最受欢迎

;(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);
})();

1 个答案:

答案 0 :(得分: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!');
};