readonly【定义只读属性】
描述
定义属性,主要是为了方便定义不可修改的属性值。 v3.0.11+
# 1.示例
import { readonly } from 'sf-utils2'
let person = { name: '蔡徐坤' }
readonly(person, 'name') => { name: '蔡徐坤'}
person.name = '坤坤坤'
console.log(person) => { name: '蔡徐坤'}
// 设置允许修改
readonly(person, 'name', undefined, true)
person.name = '坤坤坤'
console.log(person) => { name: '坤坤坤'}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
输出结果
浅红色的表示不可枚举。
:::
# 2.入参说明
| 参数 | 说明 | 类型 | 是否必填 | 默认值 |
|---|---|---|---|---|
| obj | 原对象 | Object | 是 | |
| key | 字段名【属性名】 | String | 是 | |
| value | 值 | any | 否 | undefined |
| writeable | 是否允许修改 | Boolean | 否 | false |
# 3.源码
/**
* 设置属性,不可修改
* @param {Object} obj
* @param {String} key
* @param {*} val
* @param {boolean} writable
* @version v3.0.11+
* @returns {*}
*/
function readonly(obj, key, val = undefined, writable = false) {
const attribute = {
writable: !!writable,
}
if (val !== undefined) attribute.value = val
return Object.defineProperty(obj, key, attribute)
}
export default readonly
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
上次更新: 2023/06/24, 19:35:48