Come passare un oggetto come parametro a una funzione?

Come passare un oggetto come parametro alla funzione di costruzione, e copiare le sue proprietà nel nuovo oggetto? Ecco di seguito un pattern pronto all’uso.

Ecco un esempio veloce su come utilizzare JavaScript module pattern per passare un oggetto come parametro a una funzione ‘constructor’:

var s,
NewsWidget = {

  //Impostiamo i settaggi di 'default':
  settings: {
    numArticles: 5,
    articleList: $('#article-list'),
    moreButton: $("#more-button")
  },
  
  //Nella funzione di 'init', passiamo come argomento
  //l'oggetto memorizzato nella proprietà 'settings',
  //e sovrascriviamo le proprietà di default. Chiamiamo
  //poi la funzione 'bindUIActions'
  init: function(options) {
    this.settings = $.extend(this.settings, options);
    s = this.settings;
    this.bindUIActions();
  },

  bindUIActions: function() {
    s.moreButton.on('click', function() {
      NewsWidget.getMoreArticles(s.numArticles);
    });
  },

  getMoreArticles: function(numToGet) {
    // $.ajax or something
    // using numToGet as param
  }

};

$(function(){
  NewsWidget.init({
    numArticles: 6
  });

  console.log(s.numArticles);
});