# Functions

get(object, path, [defaultValue])*

根据 object 对象的 path 路径获取值。 如果解析 valueundefined 会以 defaultValue 取代。

说明: 该方法主要目的在于,直接通过 path 访问 object 属性值,很可能 path 的中间层属性就已经是 undefined,无法达到目标层级得到对应属性值, 而报错误 TypeError: Cannot read property 'xxx' of undefined,这在 vue 项目的 vuex 属性访问时极为常见。

set(object, path, value, [customizer])Object

设置 object 对象中对应 path 属性路径上的值,如果 path 任何一级不存在,则创建。 缺少的索引属性会创建为数组,而缺少的属性会创建为对象。

注意: 这个方法会改变 object

# get(object, path, [defaultValue]) ⇒ *

根据 object 对象的 path 路径获取值。 如果解析 valueundefined 会以 defaultValue 取代。

说明: 该方法主要目的在于,直接通过 path 访问 object 属性值,很可能 path 的中间层属性就已经是 undefined,无法达到目标层级得到对应属性值, 而报错误 TypeError: Cannot read property 'xxx' of undefined,这在 vue 项目的 vuex 属性访问时极为常见。

Kind: global function
Returns: * - 返回解析 path 的值。

Param Type Default Description
object Object 要检索的对象。
path Array.<String> | String 要获取属性的路径。
[defaultValue] * 如果解析 path 的值是 undefined ,则返回该指定的默认值。

Example

var object = { 'a': [{ 'b': { 'c': 3 } }] };

get(object, 'a[0].b.c');
// => 3

get(object, ['a', '0', 'b', 'c']);
// => 3

get(object, 'a.b.c', 'default');
// => 'default'

# set(object, path, value, [customizer]) ⇒ Object

设置 object 对象中对应 path 属性路径上的值,如果 path 任何一级不存在,则创建。 缺少的索引属性会创建为数组,而缺少的属性会创建为对象。

注意: 这个方法会改变 object

Kind: global function
Returns: Object - 返回被修改后的 object

Param Type Default Description
object Object 要修改的对象。
path Array | string 要设置的对象路径。
value * 要设置的值。
[customizer] function 用来定制分配的值的自定义方法,如 customizer(nested, key, newValue),当 newValue !== nested[key] 时代表需要设置新的属性值, 此时可以使用 Vue.set 来设置新的值以支持动态 响应特性(请注意,这与 lodash 的 set 使用策略完全不同)

Example

var object = { 'a': [{ 'b': { 'c': 3 } }] };

set(object, 'a[0].b.c', 4);
console.log(object.a[0].b.c);
// => 4

set(object, ['x', '0', 'y', 'z'], 5);
console.log(object.x[0].y.z);
// => 5