2010-10-12 55 views
0

我有两个JavaScript对象apimyApi的Javascript插件开发,扩展库

var api = {}; 
api.foo = function(){ ... }; 
api.foo2 = function(){ ... }; 

var myApi = {}; 
myApi.foo = function(){ ...}; 
myApi.myFoo = function(){ ...}; 
myApi.myFoo2 = function(){ ...}; 

我想所有myApi.*功能添加到api对象,而无需重写api.foo

确实,我想了解如何将API扩展到彼此并使用JavaScript开发插件。

这个问题的最佳实践是什么?

回答

2

要回答你的问题的第一部分,你可以修改merge方法我在我的一些代码中使用:

if (typeof Object.merge !== 'function') { 
    Object.merge = function (o1, o2) { // Function to merge all of the properties from one object into another 
     for(var i in o2) { o1[i] = o2[i]; } 
     return o1; 
    }; 
} 

如不需要覆盖已经存在的对象,你会增加一个检查:

if (typeof Object.merge !== 'function') { 
    Object.merge = function (o1, o2) { // Function to merge all of the properties from one object into another 
     for(var i in o2) { if(!(i in o1)) o1[i] = o2[i]; } 
     return o1; 
    }; 
}