Object.defineProperties: упрощённая функция для работы с операциями
npm install define-props
yarn add define-props
defineProps(obj, props, defaults)
obj в данный момент может быть только не undefined
или null
.
defaults должен иметь структуру {}
, где допустимы следующие поля:
defaults.enumerable
: определяет возможность перебора свойств объекта, по умолчанию — true
;defaults.writable
: определяет возможность изменения значения свойства, по умолчанию — false
;defaults.configurable
: определяет возможность удаления свойства из объекта, по умолчанию — false
.props может быть []
, {}
или функцией:
prop.value
: значение свойства;prop.get
: метод getter;prop.set
: метод setter;prop.enumerable
: см. defaults
;prop.writable
: см. defaults
;prop.configurable
: см. defaults
.В процессе использования выяснилось, что есть проблемы с reference
, поэтому на данный момент это объявление не используется. В следующей версии будет предложена опция clone
для копирования значений объекта.
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';
}
}
})
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )