Так что я использую $ .extend для объединения нескольких компонентов (объектов). Некоторые из этих компонентов имеют функцию с одним и тем же ключом. Я хочу, чтобы конечный расширенный объект имел тот же самый ключ, но указывал ли он на функцию, которая вызывает все версии функций объединенных компонентов один за другим.jQuery расширяет несколько объектов с одинаковой функцией
Так что бы выглядеть примерно так:
var a = { foo: function() { console.log("a"); } };
var b = { foo: function() { console.log("b"); } };
var c = {}; // Doesn't have foo
var d = $.extend({}, a, b, c);
var e = $.extend({}, a, c);
var f = $.extend({}, c);
d.foo(); // Should call function() { console.log("a"); console.log("b"); }
e.foo(); // Should call function() { console.log("a"); }
f.foo(); // Should call function() {}
Есть ли прагматичный способ сделать это? Я хочу сделать это только для определенного набора ключей, поэтому я хотел бы объединить все функции этих конкретных клавиш и позволить упорядочиванию в дополнение перезаписывать что-либо еще.
Надеется, что имеет смысл: S
Спасибо! Я хотел бы иметь возможность вызывать foo на возвращаемом объекте, независимо от того, содержались ли в нем компоненты. Мне нужно будет углубиться в ваш ответ, но, похоже, я мог бы использовать ваше решение, но просто добавить фиктивную функцию foo в случае, если она не существует в v. – Andrew
. Добро пожаловать :) Да. благодаря – guest271314