2014-11-25 37 views
0

如何扩展一个对象与更多的键从另一个脚本来?Javascript扩展对象与其他脚本中的新键

所以我有这个需要主脚本,在这里我创建一个通用对象,我将在整个项目中使用。

现在另一个脚本我已经是创造基本的项目信息,我想有这个主要对象以及

所以我需要main.js看起来是这样的:

//my main object 
var mainObj = mainObj || {}; 

require.config({ 
    paths: { 
     leaflet: './leaflet-0.7.3', 
     bootstrap: './vendors/bootstrap.min', 
     projectInfo: './project-info' 
    }, 
    shim: { 
     'bootstrap': { 
      deps: ['projectInfo'], 
      export: 'bootstrap' 
     }, 
    } 
}); 

define(['projectInfo'], function(projectInfo) { 

    'use strict'; 

    mainObj = { 

     //HERE I NEED THE PROJECTINFO OBJECTS 
     projection: projectInfo.projection, 
     version: projectInfo.projection 

    }; 

} );

这里是与projectInfo脚本:

(function (root, factory) { 
    if (typeof define === 'function' && define.amd) { 
     define([], factory); 
    } else if (typeof exports === 'object') { 
     module.exports = factory(); 
    } else { 
     factory(root); 
    } 
}(this, function() { 

    return { 

     projection: { 
      type: 'EPSG:4326', 
      proj4: '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs', 
      resolutions: [1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5],  
      tilesMap: 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 
      tilesSat: 'http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}' 

     }, 
     version: '0.0.1' 

    }; 

})); 

这工作,howeverdon't希望有“复制”手工的信息,我宁愿只用该信息一气呵成扩展这个mainObj /一条线。

有没有办法做到这一点,而不必编写另一个脚本来做到这一点?

在此先感谢!

回答

2

你可以用下划线的extend功能做到这一点:

_.extend(mainObj, projectInfo); 

jQuery有一个extend功能,太:

$.extend(mainObj, projectInfo); 

而且,随着菲利克斯低于所指出的,这一功能计划在ES6与Object.assign

Object.assign(mainObj, projectInfo); 
+0

谢谢!但如果你是不使用下划线? – BonifatiusK 2014-11-25 14:54:25

+2

@BonifatiusK:['Object.assign'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)。 – 2014-11-25 14:56:48

+1

@BonifatiusK:你也可以使用jQuery的[extend](http://api.jquery.com/jquery.extend/)函数。 – soulprovidr 2014-11-25 14:58:53