Функция 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, время: 23:50. |