Показать сообщение отдельно
  #9 (permalink)  
Старый 08.08.2012, 11:32
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Сообщение от Dmitriyff Посмотреть сообщение
function extend() {
    var options, name,
    	target = arguments[0] || {},
    	i = 1
    	length = arguments.length;

    for ( ; i < length; i++) {
    	if ( (options = arguments[i]) != null) {
    		for (var name in options) {
    			target[name] = options[name]
    		}
    	}
    }

    return target;
}

var defaults = {width: 'auto', height: 'auto'};
var options = {width: '1000px'};
var c = extend({}, defaults, options);
console.log(c); // {width: '1000px', 'height': 'auto'}

самый простой вариант
посмотрите реализацию у jQuery
Это плохой пример, если массив, содержит вложенные массивы то при модификации исходного массива будет модифицирована и копия

function extend() {
    var target = arguments[0];
    
    for (var i = 1; i < arguments.length; ++i) {
        var options = arguments[i];
        
        for (var prop in options) {          
            target[prop] = (typeof options[prop] == 'object') ? extend({}, options[prop]) : options[prop];
        }
    }
    
    return target;
}
Ответить с цитированием