(require("@nginstack/engine/lib/object/declareProperty"))(obj, prop, descriptor)
Cria uma propriedade com getter e setter no formato suportado pelo Engine.
O propósito desta função é implementar parcialmente a funcionalidade do
método Object.defineProperty
, enquanto ele não é suportado nativamente pelo Engine.
Diferentemente do comportamento Object.defineProperty
, as propriedades criadas
serão sempre configuráveis e enumeráveis, pois esse é o único comportamento permitido no Engine.
O seu uso permite encapsular as definições do getter e setter, além de simplificar o JSDoc ao tornar desnecessário a documentação do getter, do setter e o uso do comentário especial **jsdoc.
Parameters:
Name | Type | Description |
---|---|---|
obj |
Object | Objeto que terá a propriedade criada. |
prop |
string | Nome da propriedade a ser criada. |
descriptor |
PropertyDescriptor | Descrição da nova propriedade. Opções possíveis:
|
Example
// Crie um comentário JSDoc para documentar a propriedade abaixo. Para fins de documentação, // ela será uma propriedade normal. No entanto, o defineProperty elimina essa definição // e cria um getter e, opcionalmente, um setter para ela. const declareProperty = require('@nginstack/engine/lib/object/declareProperty'); MyClass.prototype.test = 0; declareProperty(MyClass.prototype, 'test', (function () { MyClass.prototype.test_ = ''; return { get: function () { return this.test_; }, set: function (val) { if (val >= 0) { this.test_ = val; } else { throw new Error('Não são permitidos valores negativos.'); } } }; })());
Type Definitions
-
PropertyDescriptor
-
Type:
- Object