javascript – Is it possible to access the property of an object within itself?

Question:

Cadastro = {
    "descricao" : "Novo usuário",
    "editando" : false
}

Is it possible at runtime I get the property value by "editing" and use it?

Something like:

Cadastro = {
    "descricao" : "Novo usuário",
    "editando" : false,
    "titulo" : "editando" ? "Editar" : "Criar"
}

I found a way but it's not using the property, but creating a variable in the global scope:

window.editando = true;
Cadastro = {
    "descricao" : "Novo usuário",
    "editando" : false,
    "titulo" : (window.editando ? "Editar" : "Novo")
}

Is there any other way to do this? What I want is when the value of the variable changes the return value "title" changes too.

Answer:

code, you can do as follows:

 var Cadastro = function (descricao, editando) { this.descricao = descricao; this.editando = editando; }; Object.defineProperty(Cadastro.prototype, "titulo", { get: function () { return this.editando ? "Editar" : "Criar"; }, enumerable: true }); var cadastro1 = new Cadastro("Novo usuário", false); console.log(cadastro1.titulo); // Criar var cadastro2 = new Cadastro(); cadastro2.descricao = "Novo perfil"; cadastro2.editando = true; console.log(cadastro2.titulo); // Editar

Depending on your implementation, you may encounter some difficulty because of the combination of Object.defineProperty and *.prototype , in this case define the property in the "Class" constructor.

 var Cadastro = function (descricao, editando) { this.descricao = descricao; this.editando = editando; Object.defineProperty(this, "titulo", this.descriptor.titulo); }; Cadastro.prototype.descriptor = {}; Cadastro.prototype.descriptor.titulo = { get: function () { return this.editando ? "Editar" : "Criar"; }, enumerable: true } var cadastro1 = new Cadastro("Novo Usuario", true); var cadastro2 = new Cadastro("Novo Perfil", false); console.log(JSON.stringify(cadastro1)); console.log(JSON.stringify(cadastro2));
Scroll to Top