# Functions
- get(object, path, [defaultValue]) ⇒
* 根据
object对象的path路径获取值。 如果解析value是undefined会以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 路径获取值。 如果解析 value 是 undefined 会以 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