foop
Version:
interfaces that describe their intentions.
40 lines (38 loc) • 2.81 kB
JavaScript
var isNil = require('../is/nullOrUndefined')
/**
* cast to object, instead of throwing (like in the spec), returns {} if nill
* @since 5.0.0-beta.6
* @memberOf cast
*
* @name toObj
* @alias toObject
*
* @param {*} x cast to object
* @return {Object} Object(x) || {}
*
* {@link http://ecma-international.org/ecma-262/7.0/#sec-toobject emca-toobject}
* {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L637 underscore-to-object}
* @see {@link underscore-to-object}
* @see {@link emca-toobject}
*
* @example
*
* toObj(null) //=> {}
*
* @example
*
* var obj = {eh: true}
* var objected = toObj(obj)
* obj === objected //=> true
*
*/
module.exports = function toObj(x) {
// @NOTE this is spec, but IMO, better to return false, or empty obj
// if (x === null || x === undefined) {
// throw new TypeError('Null or undefined passed to ToObject')
// }
// if (isNil(x)) return {}
// else return Object(x)
return Object(x)
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9PYmouanMiLCJzb3VyY2VzIjpbInRvT2JqLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGlzTmlsID0gcmVxdWlyZSgnLi4vaXMvbnVsbE9yVW5kZWZpbmVkJylcblxuLyoqXG4gKiBjYXN0IHRvIG9iamVjdCwgaW5zdGVhZCBvZiB0aHJvd2luZyAobGlrZSBpbiB0aGUgc3BlYyksIHJldHVybnMge30gaWYgbmlsbFxuICogQHNpbmNlIDUuMC4wLWJldGEuNlxuICogQG1lbWJlck9mIGNhc3RcbiAqXG4gKiBAbmFtZSB0b09ialxuICogQGFsaWFzIHRvT2JqZWN0XG4gKlxuICogQHBhcmFtICB7Kn0geCBjYXN0IHRvIG9iamVjdFxuICogQHJldHVybiB7T2JqZWN0fSBPYmplY3QoeCkgfHwge31cbiAqXG4gKiB7QGxpbmsgaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9vYmplY3QgZW1jYS10b29iamVjdH1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvYmxvYi9tYXN0ZXIvdW5kZXJzY29yZS5qcyNMNjM3IHVuZGVyc2NvcmUtdG8tb2JqZWN0fVxuICogQHNlZSB7QGxpbmsgdW5kZXJzY29yZS10by1vYmplY3R9XG4gKiBAc2VlIHtAbGluayBlbWNhLXRvb2JqZWN0fVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgdG9PYmoobnVsbCkgLy89PiB7fVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgdmFyIG9iaiA9IHtlaDogdHJ1ZX1cbiAqICAgIHZhciBvYmplY3RlZCA9IHRvT2JqKG9iailcbiAqICAgIG9iaiA9PT0gb2JqZWN0ZWQgLy89PiB0cnVlXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRvT2JqKHgpIHtcbiAgLy8gQE5PVEUgdGhpcyBpcyBzcGVjLCBidXQgSU1PLCBiZXR0ZXIgdG8gcmV0dXJuIGZhbHNlLCBvciBlbXB0eSBvYmpcbiAgLy8gaWYgKHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkKSB7XG4gIC8vICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTnVsbCBvciB1bmRlZmluZWQgcGFzc2VkIHRvIFRvT2JqZWN0JylcbiAgLy8gfVxuICAvLyBpZiAoaXNOaWwoeCkpIHJldHVybiB7fVxuICAvLyBlbHNlIHJldHVybiBPYmplY3QoeClcbiAgcmV0dXJuIE9iamVjdCh4KVxufVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkI5QyxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTs7Ozs7OztFQU9qQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUM7Q0FDakI7In0=