heyujie
2021-05-24 4885600ecc369aa2e30a65de8dd7a410f13c34df
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"use strict";
 
var aFrom  = require("../array/from")
  , assign = require("./assign")
  , value  = require("./valid-value");
 
module.exports = function (obj/*, propertyNames, options*/) {
    var copy = Object(value(obj)), propertyNames = arguments[1], options = Object(arguments[2]);
    if (copy !== obj && !propertyNames) return copy;
    var result = {};
    if (propertyNames) {
        aFrom(propertyNames, function (propertyName) {
            if (options.ensure || propertyName in obj) result[propertyName] = obj[propertyName];
        });
    } else {
        assign(result, obj);
    }
    return result;
};