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 }]