最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - Merge two JavaScript objects - Stack Overflow

programmeradmin2浏览0评论

I've got a big JavaScript object literal I am reusing with very few modifications each time. It would be good to make a variable containing most of the object, then reference that each time I need it.

But how can I do that? I tried to do this, but it didn't work:

var settings = {
 legend: {
  enabled:false
 },
 yAxis: {
  title: {
   text: 'Impact'
  }
 },
 tooltip: {
  formatter: function() {
   return 'Impact: '+ this.y +' points'
  }
 },
 credits: {
  enabled: false
 },
 exporting: {
  enabled: false
 }
};

jQuery(document).ready(function() {   
 new Highcharts.Chart({
  chart: {
   renderTo: 'chart',
   defaultSeriesType: 'column',
   width: 450
  },         
  title: {
   text: 'Comparison of Impact for Male age 23'
  },
  xAxis: {
   categories: [
    'Good brain', 
    'Good humor', 
    'Good will'
   ],
  },
  series: [{
   data: [5,2,8]
  }],
  settings // <-- HERE
 });
}); 

I've got a big JavaScript object literal I am reusing with very few modifications each time. It would be good to make a variable containing most of the object, then reference that each time I need it.

But how can I do that? I tried to do this, but it didn't work:

var settings = {
 legend: {
  enabled:false
 },
 yAxis: {
  title: {
   text: 'Impact'
  }
 },
 tooltip: {
  formatter: function() {
   return 'Impact: '+ this.y +' points'
  }
 },
 credits: {
  enabled: false
 },
 exporting: {
  enabled: false
 }
};

jQuery(document).ready(function() {   
 new Highcharts.Chart({
  chart: {
   renderTo: 'chart',
   defaultSeriesType: 'column',
   width: 450
  },         
  title: {
   text: 'Comparison of Impact for Male age 23'
  },
  xAxis: {
   categories: [
    'Good brain', 
    'Good humor', 
    'Good will'
   ],
  },
  series: [{
   data: [5,2,8]
  }],
  settings // <-- HERE
 });
}); 
Share Improve this question edited Aug 5, 2010 at 14:58 Crescent Fresh 117k27 gold badges157 silver badges140 bronze badges asked Aug 5, 2010 at 14:54 Mikkel RevMikkel Rev 9013 gold badges14 silver badges31 bronze badges 1
  • Currently the object looks like obj.settings.exporting.enabled. Do you want it to be obj.exporting.enabled ? – slebetman Commented Aug 5, 2010 at 15:00
Add a ment  | 

2 Answers 2

Reset to default 5

jQuerys .extend() method is what you are looking for.

For instance

$.extend(true, settings, {
   yAxis: {
     title: {
       text: 'Impact NEW'
     }
   }
});

Would just replace the yAxis part in your settings object

Reference: .extend()

jQuery.extend(settings,new) this merges objects full info, it overwrites/merges new to settings

发布评论

评论列表(0)

  1. 暂无评论