# define-props.js **Repository Path**: janpoem/define-props.js ## Basic Information - **Project Name**: define-props.js - **Description**: Object.defineProperties 的简化操作函数 - **Primary Language**: NodeJS - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 3 - **Created**: 2018-06-05 - **Last Updated**: 2022-02-21 ## Categories & Tags **Categories**: node-plugins **Tags**: None ## README # define-props.js Object.defineProperties 的简化操作函数 ## 安装说明 ``` npm install define-props ``` ``` yarn add define-props ``` ## 函数说明 `defineProps(obj, props, defaults)` __obj__ 目前仅限制为不得为 `undefined` 或 `null` __defaults__ 则必须为 `{}` 结构,defaults 的有效字段为: - `defaults.enumerable` 是否可枚举,默认 true - `defaults.writable` 是否可写入,默认 false - `defaults.configurable` 是否可配置(delete key),默认 false __props__ 可以是 `[]` 或 `{}` 或 `function`: __prop__ 表示每一个属性的声明 - `prop.value` 属性值 - `prop.get` getter方法 - `prop.set` setter方法 - `prop.enumerable` 参见 `defaults` - `prop.writable` 参见 `defaults` - `prop.configurable` 参见 `defaults` 实际使用发现 `reference` 有问题,暂时放弃这个声明,下一个版本提供一个 `clone` 的声明,复制对象值。 ```javascript const a = defineProps({}, { // a.key1 = ‘value1’ // enumerable = true, configurable = false, writable = false key1: 'value1', // a.key2 = 'value2' // 有 value 字段,则取 value 字段的值 key2: { value: 'value2', enumerable: true, writable: true }, // a.key3 = {a: 11, b: 22} // 无 value 字段,则以整个 {} 作为值 key3: { a: 11, b: 22, }, // a.key4 = 'value4' // 以一个函数为值,则直接作为 getter key4: () => { return 'value4' }, // a.key5 = 'value5' // 如果 {} 未指定 value 字段,但指定了 get 方法(set不算) key5: { get: () => { return 'value5' } }, // a.key6 = undefined // 当值为 null or undefined 的时候,判断是否指定了 get 或 writable = true,否则将不会将该键值对写入到对象属性 key6: null, // 同上 key7: { value: null }, // a.key8 = null // 由于该键允许写入,所以将 key8 写入到对象属性中 key8: { value: null, writable: true }, // a.key9 = 'value9' // 因为存在 get ,所以也会将 key9 写入对象属性中 key9: { value: null, get : () => { return 'value9'; } } }) ```