JavaScript ã® strict ã¢ã¼ãå°ç¨ã®ä¾å¤ "setting getter-only property" ã¯ãã²ãã¿ã¼ã®ã¿ãå®ç¾©ããã¦ããããããã£ã«æ°ããå¤ãè¨å®ãããã¨ããæã«çºçãã¾ãã
ã¨ã©ã¼ã¡ãã»ã¼ã¸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)
ã¨ã©ã¼ã®ç¨®é¡
strict ã¢ã¼ãã§ã®ã¿ãTypeError
ã
ã²ãã¿ã¼ã®ã¿ãå®ç¾©ããã¦ããããããã£ã«ãæ°ããå¤ãè¨å®ãããã¨ãã¦ãã¾ããé strict ã¢ã¼ãã§ã¯æé»è£¡ã«ç¡è¦ãããã ãã§ããã strict ã¢ã¼ãã§ã¯ TypeError
ãçºçãã¾ãã
ä¸è¨ã®ä¾ã§ã¯ãããããã£ã®ã²ãã¿ã¼ã®è¨å®æ¹æ³ã示ãã¦ãã¾ããã»ãã¿ã¼ãæå®ãã¦ããªãããã temperature
ããããã£ã« 30
ãè¨å®ãããã¨ããã¨ãTypeError
ãçºçãã¾ãã詳細㯠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"
ãã®ã¨ã©ã¼ãä¿®æ£ããã«ã¯ã temperature ããããã£ã«å¤ãè¨å®ãããã¨ãã¦ãã 16 è¡ç®ãåãé¤ãããæ¬¡ã®ããã«ã»ãã¿ã¼ãå®è£ ãã¾ãã
"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 }]
é¢é£é
ç®
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4