Helper utilities for property definition and other common tasks.
npm install @pwshub/bellajsimport { defineProp } from '@pwshub/bellajs'Define a property on an object with configurable options. Shorthand for Object.defineProperty().
Parameters:
ob- The object to define property onkey- Property nameval- Property valueconfig- Configuration options:writable(default: false) - Whether value can be changedconfigurable(default: false) - Whether property can be deleted/reconfiguredenumerable(default: false) - Whether shows in for...in loops
Returns: void (modifies object in place)
const obj = {}
// Define non-writable, non-enumerable property
defineProp(obj, 'secret', 'hidden')
console.log(obj.secret) // 'hidden'
obj.secret = 'changed' // Silent failure (strict mode: TypeError)
console.log(obj.secret) // 'hidden'
// Define enumerable property
defineProp(obj, 'name', 'Alice', { enumerable: true })
console.log(obj.name) // 'Alice'
Object.keys(obj) // ['name'] (secret not included)
// Define writable property
defineProp(obj, 'count', 0, { writable: true })
obj.count = 100 // Works
console.log(obj.count) // 100
// Define configurable (can be deleted)
defineProp(obj, 'temp', 'value', { configurable: true })
delete obj.temp // Works
console.log(obj.temp) // undefinedimport { defineProp } from '@pwshub/bellajs'
const Config = {}
defineProp(Config, 'API_URL', 'https://api.example.com', {
enumerable: true
})
defineProp(Config, 'VERSION', '1.0.0', {
enumerable: true
})
// Config.API_URL cannot be changedimport { defineProp } from '@pwshub/bellajs'
class User {
constructor(name) {
this.name = name
defineProp(this, '_password', 'secret123')
}
}
const user = new User('Alice')
console.log(user.name) // 'Alice'
console.log(user._password) // 'secret123'
console.log(Object.keys(user)) // ['name'] (_password hidden)import { defineProp } from '@pwshub/bellajs'
const readOnly = {}
defineProp(readOnly, 'value', 42, {
writable: false,
configurable: false,
enumerable: true
})
readOnly.value = 100 // Fails
console.log(readOnly.value) // 42import { defineProp } from '@pwshub/bellajs'
const obj = {}
const props = {
x: 1,
y: 2,
z: 3
}
Object.entries(props).forEach(([key, value]) => {
defineProp(obj, key, value, { enumerable: true })
})
console.log(obj) // { x: 1, y: 2, z: 3 }- Object utilities - clone, copies for object manipulation
- Detection utilities - Type checking