这个模式在Javascript中调用了什么?它有名字吗?

jon*_*ohn 9 javascript design-patterns

component.js

var component = (function(){

    var self;

    var default_options = {
        array_option : [],
        string_option : "default"
    };

    return {

        other_function: function(args) {

        },
        init: function(options) {
            self = this;

            // merge in user options 
            for (var attr in options) { 
                if (options.hasOwnProperty(attr)) {
                    self.o[attr] = options[attr];
                }
            }            

            /***
             * Initialize component
             */

            self.other_function(args);
        }
   };

})();
Run Code Online (Sandbox Code Playgroud)

然后在HTML中

<script src="component.js"></script>
<script>
    // init the component
    component.init({
        array_option : [1,2,3],
    });
</script>
Run Code Online (Sandbox Code Playgroud)

我问的原因是我已经通过例子看到它并认为它有意义,但他们是否阅读了为什么这是一个好的做法?这是面向对象的Javascript吗?

如果这 OO javascript,这种模式是否会使原型定义变得无用?

对上述问题的答案很好

Javascript:模块模式与构造函数/原型模式?

Joe*_*Joe 8

Javascript模块模式,是的,它尝试用封装模仿OO编程