Object.prototype.__defineSetter__()
鿍奍;: ãã®æ©è½ã¯éæ¨å¥¨ã«ãªãã¾ãããã¾ã 対å¿ãã¦ãããã©ã¦ã¶ã¼ãããããããã¾ãããããã§ã«é¢é£ããã¦ã§ãæ¨æºããåé¤ããã¦ããããåé¤ã®æç¶ãä¸ã§ããããäºææ§ã®ããã ãã«æ®ããã¦ããå¯è½æ§ãããã¾ãã使ç¨ãé¿ããã§ããã°æ¢åã®ã³ã¼ãã¯æ´æ°ãã¦ãã ããããã®ãã¼ã¸ã®ä¸é¨ã«ããäºææ§ä¸è¦§è¡¨ãè¦ã¦å¤æãã¦ãã ããããã®æ©è½ã¯çªç¶åä½ããªããªãå¯è½æ§ããããã¨ã«æ³¨æãã¦ãã ããã
ã¡ã¢:
ãã®æ©è½ã¯éæ¨å¥¨ã¨ãªããã»ãã¿ã¼ã¯ãªãã¸ã§ã¯ãåæååã®æ§æã¾ã㯠Object.defineProperty() API ã使ç¨ãã¦å®ç¾©ããæ¹æ³ã«ç½®ãæãããã¾ããããã®ã¡ã½ããã®åä½ã¯ã¦ã§ãã®äºææ§ã ãã®ããã«ä»æ§åããããã®ã§ãããã©ã®ãã©ãããã©ã¼ã ã§ãå®è£
ãããã¨ãè¦æ±ããã¦ããããã§ã¯ããã¾ãããã©ãã§ãåä½ããã¨ã¯éãã¾ããã
__defineSetter__() 㯠Object ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ããªãã¸ã§ã¯ãã®ããããã£ã¨é¢æ°ãçµã³ä»ãããã®ããããã£ãè¨å®ãããã¨ããã¨å¼ã³åºãããããã«ãã¾ãã
æ§æ
__defineSetter__(prop, func)
弿°
è¿å¤
ãªã (undefined)ã
ä¾å¤
TypeError-
funcã颿°ã§ãªãå ´åã«çºçãã¾ãã
解説
Object.prototype ç¶æ¿ãããã¹ã¦ã®ãªãã¸ã§ã¯ãï¼ã¤ã¾ãã null ãããã¿ã¤ããªãã¸ã§ã¯ããé¤ããã¹ã¦ã®ãªãã¸ã§ã¯ãï¼ã¯ __defineSetter__() ã¡ã½ãããç¶æ¿ãã¦ãã¾ãããã®ã¡ã½ããã«ãããæ¢åã®ãªãã¸ã§ã¯ãã«ã»ãã¿ã¼ãå®ç¾©ãããã¨ãã§ãã¾ããããã¯ã Object.defineProperty(obj, prop, { set: func, configurable: true, enumerable: true }) ã¨ç価ã§ãããããããã£ãåæãããæ§æå¯è½ã§ãããæ¢åã®ã»ãã¿ã¼ãåå¨ããå ´åã¯ä¿åããããã¨ãæå³ãã¦ãã¾ãã
__defineSetter__() ã¯ä»æ§æ¸ã§ normative optional ã¨å®ç¾©ããã¦ãããããã¯å®è£
ãããã¨ãè¦æ±ããã¦ããªãã¨ãããã¨ã§ãããããã主è¦ãªãã©ã¦ã¶ã¼ã¯ãã¹ã¦å®è£
ãã¦ãã¾ããã使ãç¶ãããã¦ãããããé¤å»ãããå¯è½æ§ã¯ä½ãã§ãããããã©ã¦ã¶ã¼ã __defineSetter__() ãå®è£
ããå ´åã__lookupGetter__()ã__lookupSetter__()ã__defineGetter__() ã®åã¡ã½ãããå®è£
ããå¿
è¦ãããã¾ãã
ä¾
>__defineSetter__() ã®ä½¿ç¨
const o = {};
o.__defineSetter__("value", function (val) {
this.anotherValue = val;
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
æ¨æºã®æ¹æ³ã§ã»ãã¿ã¼ããããã£ãå®ç¾©
set æ§æã使ç¨ããã¨ããªãã¸ã§ã¯ããæåã«åæåãããã¨ãã«ã²ãã¿ã¼ãå®ç¾©ãããã¨ãã§ãã¾ãã
const o = {
set value(val) {
this.anotherValue = val;
},
};
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
ã¾ãã Object.defineProperty() ã使ç¨ãã¦ããªãã¸ã§ã¯ã使å¾ã«ãã®ãªãã¸ã§ã¯ãã«ã»ãã¿ã¼ãå®ç¾©ãããã¨ãã§ãã¾ãã __defineSetter__() ã¨æ¯è¼ããã¨ããã®ã¡ã½ããã§ã¯ã·ã³ãã«ã®ããããã£ãå®ç¾©ããã ãã§ãªããã»ãã¿ã¼ã®åæå¯è½æ§ãæ§æå¯è½æ§ãå¶å¾¡ãããã¨ãã§ãã¾ãã Object.defineProperty() ã¡ã½ããã¯ã Object.prototype ãç¶æ¿ãã¦ããªããã __defineSetter__() ã¡ã½ããããªã null ãããã¿ã¤ããªãã¸ã§ã¯ãã§ãåä½ãã¾ãã
const o = {};
Object.defineProperty(o, "value", {
set(val) {
this.anotherValue = val;
},
configurable: true,
enumerable: true,
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.prototype.__defineSetter__> |