UNPKG

funclib

Version:

A powerful javascript functions library!

30 lines (27 loc) 899 B
var UDF = undefined; var rest = require('./rest'); var isStr = require('./isStr'); var typeVal = require('./typeVal'); var getPaths = require('./_getPaths'); /**@function*/ /** * [fn.get] 返回对象或子孙对象的属性,可判断类型 * @param srcObj : object * @param pathStr : string * @param types : ...string[] */ var get = rest(function (srcObj, pathStr, types) { if (!srcObj || !isStr(pathStr)) return UDF; var paths = getPaths(pathStr), prop = paths.shift(); if (!prop) { return types.length ? typeVal.apply(void 0, [srcObj].concat(types)) : srcObj; } if (paths.length) { if (!typeVal(srcObj[prop], 'object', 'fun')) return UDF; return get.apply(void 0, [srcObj[prop], paths.join('/')].concat(types)); } else { return types.length ? typeVal.apply(void 0, [srcObj[prop]].concat(types)) : srcObj[prop]; } }); /**@function*/ module.exports = get;