Methods
-
<inner> declareProperty(obj, prop, descriptor)
-
Cria uma propriedade com getter e setter no formato suportado pelo runtime Ije do Engine.
O propósito desta função é implementar parcialmente a funcionalidade do método
Object.defineProperty
, enquanto ele não é suportado nativamente pelo runtime Ije do Engine.Diferentemente do comportamento
Object.defineProperty
, as propriedades criadas substituem a definição anterior e sempre são configuráveis, pois esse é o único comportamento permitido no runtime Ije do Engine. Também por limitações do runtime Ije, as funções getter e setter são definidas como propriedades enumeradas deobj
em vez da propriedade declarada, divergindo da especificação EcmaScript e do runtime V8.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:
- get: getter da propriedade. Caso não seja informado, a leitura da
propriedade sempre retornará undefined.
- set: setter da propriedade. Caso não seja informado, a propriedade será somente para leitura.
- value: valor da propriedade. Não pode ser utilizado conjuntamente com get ou set.
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.'); } } }; })());
- get: getter da propriedade. Caso não seja informado, a leitura da
propriedade sempre retornará undefined.
Type Definitions
-
PropertyDescriptor
-
Type:
- Object