just-extend
Advanced tools
Comparing version 1.1.22 to 1.1.23
21
index.js
@@ -15,3 +15,3 @@ module.exports = extend; | ||
extend(obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]} | ||
arr.push[4]; | ||
arr.push(4); | ||
obj; // {a: 3, b: 5, c: [1, 2, 3, 4]} | ||
@@ -22,13 +22,21 @@ | ||
extend(true, obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]} | ||
arr.push[4]; | ||
arr.push(4); | ||
obj; // {a: 3, b: 5, c: [1, 2, 3]} | ||
extend({a: 4, b: 5}); // {a: 4, b: 5} | ||
extend(3, {a: 4, b: 5}); // throws | ||
extend({a: 4, b: 5}, 3); // throws | ||
extend({a: 4, b: 5}, true); // throws | ||
*/ | ||
function extend(obj1, obj2 /*, [objn]*/) { | ||
function extend(/* [deep], obj1, obj2, [objn] */) { | ||
var args = [].slice.call(arguments); | ||
var deep = false; | ||
if (typeof args[0] === 'boolean') { | ||
if (typeof args[0] == 'boolean') { | ||
deep = args.shift(); | ||
} | ||
var result = args[0]; | ||
if (!result || typeof result !== 'object') { | ||
throw new Error('expected extendee ', result, ' to be an object'); | ||
} | ||
var extenders = args.slice(1); | ||
@@ -38,6 +46,9 @@ var len = extenders.length; | ||
var extender = extenders[i]; | ||
if (!extender || typeof extender !== 'object') { | ||
throw new Error('expected extender ', extender, ' to be an object'); | ||
} | ||
for (var key in extender) { | ||
// include prototype properties | ||
var value = extender[key]; | ||
if (deep && value && (typeof value == 'object')) { | ||
if (deep && value && typeof value == 'object') { | ||
var base = Array.isArray(value) ? [] : {}; | ||
@@ -44,0 +55,0 @@ result[key] = extend(true, result[key] || base, value); |
{ | ||
"name": "just-extend", | ||
"version": "1.1.22", | ||
"version": "1.1.23", | ||
"description": "extend an object", | ||
@@ -12,2 +12,7 @@ "main": "index.js", | ||
"object", | ||
"assign", | ||
"clone", | ||
"copy", | ||
"merge", | ||
"deep-copy", | ||
"extend", | ||
@@ -14,0 +19,0 @@ "no-dependencies", |
@@ -30,2 +30,7 @@ ## just-extend | ||
obj; // {a: 3, b: 5, c: [1, 2, 3]} | ||
extend({a: 4, b: 5}); // {a: 4, b: 5} | ||
extend(3, {a: 4, b: 5}); // throws | ||
extend({a: 4, b: 5}, 3); // throws | ||
extend({a: 4, b: 5}, {b: 4, c: 5}, 'c'); // throws | ||
``` |
3083
53
36