12345678910111213141516171819202122232425 |
- define(['./isFunction', './isArray'], function (isFunction, isArray) {
-
- // Traverses the children of `obj` along `path`. If a child is a function, it
- // is invoked with its parent as context. Returns the value of the final
- // child, or `fallback` if any child is undefined.
- function result(obj, path, fallback) {
- if (!isArray(path)) path = [path];
- var length = path.length;
- if (!length) {
- return isFunction(fallback) ? fallback.call(obj) : fallback;
- }
- for (var i = 0; i < length; i++) {
- var prop = obj == null ? void 0 : obj[path[i]];
- if (prop === void 0) {
- prop = fallback;
- i = length; // Ensure we don't continue iterating.
- }
- obj = isFunction(prop) ? prop.call(obj) : prop;
- }
- return obj;
- }
-
- return result;
-
- });
|