如何有效地将属性从一个对象复制到另一个对象?

How to efficiently copy properties from an object to another?

我正在寻找一种更有效地编写此代码的方法。在对象加载方法中,它的行数将与 options 中的条目一样多(至少)。

var myPlugin = {
  // here are the 'plugin' default ptions
  option1: 'deafult1'
  , option2: 'deafult2'
  , option3: false
  , option4: true
  , optionN: 'deafultN'

  // here the plugin will receive an object ('options')
  load: function(options){
    if (options.option1) myPlugin.option1 = options.option1;
    if (options.option2) myPlugin.option2 = options.option2;
    //...
  }
}


myPlugin.load({
  option3: true
  , option5: '123'
});

这是将选项加载到 JS/jquery 插件的正确方法吗? 有没有办法使用 for ()/each() 以更 efficient/neat 的方式加载 选项对象

我想是这样的:

  load: function(options){
    $.each(options, function(index, opt){
      // how to load options from here?
      // something like:
      // myPlugin.  ->current opt property name = opt

   });
  }

尝试$.extend()

var opts = $.extend( {}, myPlugin.options, options );

这将从右向左复制属性,最右边的对象获得最高优先级。

文档:http://api.jquery.com/jquery.extend/

看看 jQuery website 中的 $.extend

这是跨对象复制属性或完全复制到新对象的一种简单方法。 例如,来自 jQuery 网站:

var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };

// Merge defaults and options, without modifying defaults
var settings = $.extend( {}, defaults, options );`