Javascript使用来自其他脚本的新键扩展对象

Javascript使用来自其他脚本的新键扩展对象,javascript,requirejs,javascript-objects,Javascript,Requirejs,Javascript Objects,如何扩展从另一个脚本提交更多密钥的对象 所以我有这个require主脚本,在这里我创建了一个通用对象,我将在整个项目中使用它 现在我拥有的另一个脚本是创建基本的项目信息,我希望它也能包含在这个主对象中 因此,我的require main.js如下所示: //my main object var mainObj = mainObj || {}; require.config({ paths: { leaflet: './leaflet-0.7.3', bo

如何扩展从另一个脚本提交更多密钥的对象

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

现在我拥有的另一个脚本是创建基本的项目信息,我希望它也能包含在这个主对象中

因此,我的require 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'

    };

}));
这是可行的,但是我不想手工“复制”信息,我宁愿用这些信息一次/一行地扩展这个mainObj

有没有一种方法可以做到这一点,而无需编写另一个脚本


提前谢谢

您可以使用下划线的函数执行此操作:

_.extend(mainObj, projectInfo);
jQuery也有一个功能:

$.extend(mainObj, projectInfo);
并且,正如Felix在下面指出的,该功能计划用于ES6,包括:


谢谢但是如果你不使用下划线怎么办?@BonifatiusK:。@BonifatiusK:你也可以使用jQuery的函数。@FelixKling:太酷了,我不知道这是ES6计划的一部分。谢谢你提到这件事。那件不错!有没有人能把上面所有的正确答案都放在一个帖子里,这样我就可以把它作为解决问题的答案?顺便说一下,我现在正在使用jQuery版本。
Object.assign(mainObj, projectInfo);