在RequireJS中定义模块时,返回一个对象VS返回一个init()函数有什么区别?

时间:2016-10-27 07:05:51

标签: javascript requirejs

我有一个JS模块来存储一些配置对象。我在c#中使用它就像枚举一样。

当在另一个模块中要求它时,以下两个实现之间有什么区别?

1

Types.js

define([], function(){
    var types = {
        typeA: "Type A",
        typeB: "Type B",
        typeC: "Type C"
    };
    return {types: types};
});

用法

define(["Types.js"], function(types){
    var types = types;
    ...
});

2

Types.js

define([], function(){
    var init = function(){
        var types = {
            typeA: "Type A",
            typeB: "Type B",
            typeC: "Type C"
        };
        return {types: types};
    };      
    return {init: init};
});

用法

define(["Types.js"], function(types){
    var types = types.init();
    ...
});

这两个实现之间有什么区别吗?或者他们是一样的吗?

1 个答案:

答案 0 :(得分:0)

第二个实现更像是OOP风格,因为你可以创建类的几个实例类型:types = new Types(someParams);并使用它的字段和方法。但是第一个实现只返回对象。