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);
}
}
答案 0 :(得分:1)
您打算使用它来仅修改您控制的对象吗?如果您在其他人可能提供的对象上使用此对象,您将覆盖其run
的可能实现。
无论如何,你可以覆盖run
的实现,但是你可以保证打破他们的代码。
您可以检查该对象上是否已存在run
,但现在您的代码依赖于传入对象的结构,如果您无法在其对象上实现您的方法,则他们的代码将继续工作,但你的可能会失败(因为你将使用他们的实现,而不是你自己的。)
出于这些原因,始终建议永远不要修改您不拥有的对象。就像我说的,如果你能控制这些方法是否符合你的模式,那么这不是问题。但是,如果此代码是环境无关框架的一部分,则可能会出现问题。最好有一个作用于对象的辅助方法,而不是使用意外功能扩展对象。