Функция extend
function extend() { var target = arguments[0]; alert(arguments.length); for (var i = 1; i < arguments.length; ++i) { var options = arguments[i]; for (var prop in options) { alert(prop + ' ' + options[prop]); if (typeof arguments[i] == 'object') { target[prop] = extend({}, options[prop]); } else { target[prop] = options[prop]; } } } return target; } var defaults = {width: 'auto', height: 'auto'}; var options = {width: '1000px'}; var c = extend({}, defaults, options); alert(c.height); Не пойму в чем ошибка |
function extend() { var target = arguments[0]; for (var i = 1; i < arguments.length; ++i) { var options = arguments[i]; for (var prop in options) { if (typeof options[prop] == 'object') { target[prop] = extend({}, options[prop]); } else { target[prop] = options[prop]; } } } return target; } Спать хочу туплю |
Вопрос как в js вызвать саму функцию не обращаяесь к ней по имени в php есть __FUNCTION__, а здесь как? По идеи this({}, options[prop])?
|
function extend() { var target = arguments[0]; for (var i = 1; i < arguments.length; ++i) { var options = arguments[i]; for (var prop in options) { if (typeof options[prop] == 'object') { target[prop] = extend({}, options[prop]); } else { target[prop] = options[prop]; } } } return target; } var a = {x: 'X', y: {yx: 'XX', yy: 'YY'}}; var b = {z: 'Z'}; var c = extend({}, a, b); a.y.yx = 'TEST'; alert(c.y.yx); |
Антон Крамолов,
ээ, в чем вопрос? хм, extend - это функция наследования, а это что? |
Цитата:
Но оно depricated, правильно именно по имени. |
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 |
extend пер-ся как расширить к наследованию имеет опосредованное отношение
|
Цитата:
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; } |
вы привели пример, я привел решение для него, то что там будут вложенный объекты вы не писали, мысли читать не умею =-((
|
Часовой пояс GMT +3, время: 05:52. |