在javascript中这种编程风格怎么样?

时间:2011-01-18 05:14:09

标签: javascript

    var RootComponent = {

        init: function(options){
            options = jQuery.extend({name: 'Root'}, options);

            this.run('ContainerComponent.init')(options);
        }

     }

然后应用一个名为“run”的新方法。这将运行在此上下文的路径中找到的方法。现在您认为我可能会遇到什么问题?感谢

        klass.run = function(path){
                var that = this;
                return function(){
                 // here will be calculated the path, based on the input, this is just an hard coded example...
                    that.sb.klasses['ContainerComponent']['init'].apply(that, arguments);
                }
        }

1 个答案:

答案 0 :(得分:1)

您打算使用它来仅修改您控制的对象吗?如果您在其他人可能提供的对象上使用此对象,您将覆盖其run的可能实现。

无论如何,你可以覆盖run的实现,但是你可以保证打破他们的代码。

您可以检查该对象上是否已存在run,但现在您的代码依赖于传入对象的结构,如果您无法在其对象上实现您的方法,则他们的代码将继续工作,但你的可能会失败(因为你将使用他们的实现,而不是你自己的。)

出于这些原因,始终建议永远不要修改您不拥有的对象。就像我说的,如果你能控制这些方法是否符合你的模式,那么这不是问题。但是,如果此代码是环境无关框架的一部分,则可能会出现问题。最好有一个作用于对象的辅助方法,而不是使用意外功能扩展对象。