MCPcopy
hub / github.com/keepfool/vue-tutorials / setPath

Function setPath

06.Router/basic/js/vue.js:2763–2801  ·  view source on GitHub ↗

* Set on an object from a path * * @param {Object} obj * @param {String | Array} path * @param {*} val

(obj, path, val)

Source from the content-addressed store, hash-verified

2761 */
2762
2763 function setPath(obj, path, val) {
2764 var original = obj;
2765 if (typeof path === 'string') {
2766 path = parse(path);
2767 }
2768 if (!path || !isObject(obj)) {
2769 return false;
2770 }
2771 var last, key;
2772 for (var i = 0, l = path.length; i < l; i++) {
2773 last = obj;
2774 key = path[i];
2775 if (key.charAt(0) === '*') {
2776 key = parseExpression(key.slice(1)).get.call(original, original);
2777 }
2778 if (i < l - 1) {
2779 obj = obj[key];
2780 if (!isObject(obj)) {
2781 obj = {};
2782 if ('development' !== 'production' && last._isVue) {
2783 warnNonExistent(path, last);
2784 }
2785 set(last, key, obj);
2786 }
2787 } else {
2788 if (isArray(obj)) {
2789 obj.$set(key, val);
2790 } else if (key in obj) {
2791 obj[key] = val;
2792 } else {
2793 if ('development' !== 'production' && obj._isVue) {
2794 warnNonExistent(path, obj);
2795 }
2796 set(obj, key, val);
2797 }
2798 }
2799 }
2800 return true;
2801 }
2802
2803var path = Object.freeze({
2804 parsePath: parsePath,

Callers 1

compileSetterFunction · 0.70

Calls 5

isArrayFunction · 0.85
parseFunction · 0.70
isObjectFunction · 0.70
parseExpressionFunction · 0.70
setFunction · 0.70

Tested by

no test coverage detected