在线文档教程
JavaScript
错误 | Errors

Errors: Getter only

Errors: Getter only

信息

TypeError: setting getter-only property "x" (Firefox) TypeError: Cannot set property "prop" of #<Object> which has only a getter (Chrome)

错误类型

TypeError 仅限严格模式。

什么地方出了错?

有一个尝试为只有一个getter被指定的属性设置一个新的值。虽然在非严格模式下这会被默默的忽视,但它会抛出TypeError严格的模式。

例子

下面的例子展示了如何为一个属性设置getter。它没有指定setter,所以TypeError在尝试设置temperature属性时会抛出a 30。欲了解更多详情,请参阅该Object.defineProperty()页面。

"use strict"; function Archiver() { var temperature = null; Object.defineProperty(this, 'temperature', { get: function() { console.log('get!' return temperature; } } } var arc = new Archiver( arc.temperature; // 'get!' arc.temperature = 30; // TypeError: setting getter-only property "temperature"

要解决这个错误,你需要删除第16行,在那里试图设置温度属性,或者你需要为它实现一个setter,例如:

"use strict"; function Archiver() { var temperature = null; var archive = []; Object.defineProperty(this, 'temperature', { get: function() { console.log('get!' return temperature; }, set: function(value) { temperature = value; archive.push{ val: temperature } } } this.getArchive = function() { return archive; }; } var arc = new Archiver( arc.temperature; // 'get!' arc.temperature = 11; arc.temperature = 13; arc.getArchive( // [{ val: 11 }, { val: 13 }]