首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Errors: Getter only

信息

代码语言:javascript
复制
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()页面。

代码语言:javascript
复制
"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,例如:

代码语言:javascript
复制
"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 }]

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com