Add _.restrict(source, *keys)

Return a clone of the source with only the properties named in *keys
(either stings or arrays containing strings).

Especially useful for avoiding mass-assignment vulnerabilities.
This commit is contained in:
Chris Leishman
2012-03-24 12:26:03 -07:00
parent 00ed5d70c8
commit 7c95237845
3 changed files with 33 additions and 0 deletions

View File

@@ -645,6 +645,16 @@
return obj;
};
// Restrict a given object to the properties named
_.restrict = function(obj) {
if (obj !== Object(obj)) throw new TypeError('Invalid object');
var dest = {};
each(_.flatten(slice.call(arguments, 1)), function(prop) {
if (prop in obj) dest[prop] = obj[prop];
});
return dest;
};
// Fill in a given object with default properties.
_.defaults = function(obj) {
each(slice.call(arguments, 1), function(source) {