Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Первый элемент — основа
- * Второй — обновление
- * Возвращает объект из новых (изменённых) данных
- * До jQuery.extend далеко, но и этого хватает
- */
- function amalgamate(){
- if (!this.changes || window.changes)
- var changes = {};
- if(arguments.length > 1){
- for (var i in arguments[1]){
- if ((typeof arguments[1][i] == 'object') && (typeof arguments[0][i] == 'object')){
- changes[i] = arguments.callee(arguments[0][i], arguments[1][i]);
- }else{
- if (arguments[1][i] !== arguments[0][i]){
- arguments[0][i] = arguments[1][i];
- changes[i] = arguments[1][i];
- }
- }
- }
- return changes;
- }else
- throw new Error('Недостаточно аргументов');
- }
- // Тесты
- var one = {a: 10, b: {x: 8, y: 5, z: 0}, c: 5}
- var two = {a: 10, b: {x: 8, y: 7}, d: 2}
- var three = amalgamate(one, two);
- console.log('amalgamate test 1: ' + (one.a == two.a));
- console.log('amalgamate test 2: ' + (one.b.x == two.b.x));
- console.log('amalgamate test 3: ' + (one.b.y == two.b.y));
- console.log('amalgamate test 4: ' + (one.d == two.d));
- console.log('amalgamate test 5: ' + (three.b.y == two.b.y));
- console.log('amalgamate test 6: ' + (three.d == two.d));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement