如何有效地将属性从一个对象复制到另一个对象?
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 );
这将从右向左复制属性,最右边的对象获得最高优先级。
看看 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 );`
我正在寻找一种更有效地编写此代码的方法。在对象加载方法中,它的行数将与 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 );
这将从右向左复制属性,最右边的对象获得最高优先级。
看看 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 );`