Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
TypeError: setting getter-only property "x"
A exceção apenas do modostrict do Javascript "setting getter-only property" ocorre quando é feita a tentativa de definir um novo valor para uma propriedade para qual apenas umgetter está especificado.
In this article
Mensagem
TypeError: Assignment to read-only properties is not allowed in strict mode (Edge)TypeError: setting getter-only property "x" (Firefox)TypeError: Cannot set property "prop" of #<Object> which has only a getter (Chrome)Tipo de Erro
TypeError nomodo strict apenas.
O que deu errado?
Tem uma tentativa de definir um novo valor para uma propriedade para qual apenas umgetter está especificado.Isto será silenciosamente ignorado no modo non-strict, enquanto vai lançar umTypeError nomodo strict.
Exemplos
>Propriedades sem setter
O exemplo abaixo mostra como definir um getter para uma propriedade. Isso não especifica umsetter, então umTypeError vai ser lançado quando for feita a tentativa de definir a propriedadetemperatura para30. Para mais detalhes veja também a páginaObject.defineProperty().
"use strict";function Arquivo() { var temperatura = null; Object.defineProperty(this, "temperatura", { get: function () { console.log("get!"); return temperatura; }, });}var arq = new Arquivo();arq.temperatura; // 'get!'arq.temperatura = 30;// TypeError: setting getter-only property "temperatura"Para corrigir este erro, você vai ter que remover a linha 16, onde é feita a tentativa de definir a propriedade temperatura,ou você vai precisar implementar umsetter para a propriedade, desta forma, por exemplo:
"use strict";function Arquivo() { var temperatura = null; var arquivo = []; Object.defineProperty(this, "temperatura", { get: function () { console.log("get!"); return temperatura; }, set: function (value) { temperatura = value; arquivo.push({ val: temperatura }); }, }); this.getArquivo = function () { return arquivo; };}var arq = new Arquivo();arq.temperatura; // 'get!'arq.temperatura = 11;arq.temperatura = 13;arq.getArquivo(); // [{ val: 11 }, { val: 13 }]