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

时间:2011-08-29 19:14:40

标签: 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);
        }
   };

})();

然后在html中

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

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

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

上述问题的答案

Javascript: Module Pattern vs Constructor/Prototype pattern?

4 个答案:

答案 0 :(得分:8)

Javascript Module Pattern是的,它试图用encapsulation

来模仿OO编程

答案 1 :(得分:0)

这就是JS中的OOP。它的标准做法。

答案 2 :(得分:0)

这称为自调用(匿名)函数。 component返回一个具有init方法的对象,因此您可以将调用链接在一起。

答案 3 :(得分:0)

您可以在YUI Blog了解模块模式。