Object.prototype.__defineGetter__()
Ðе ÑÑандаÑÑно: ÐÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ ÑÑандаÑÑизиÑована. ÐÑ Ð½Ðµ ÑекомендÑем иÑполÑзоваÑÑ Ð½ÐµÑÑандаÑÑнÑе ÑÑнкÑии в дейÑÑвÑÑÑÐ¸Ñ Ð¿ÑоекÑÐ°Ñ , Ñак как Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка бÑаÑзеÑами огÑаниÑена, а поведение Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ Ð¸Ð»Ð¸ бÑÑÑ Ñдалено. Тем не менее, в некоÑоÑÑÑ ÑлÑÑаÑÑ , когда Ð½ÐµÑ ÑÑандаÑÑного ÑеÑениÑ, они могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑей алÑÑеÑнаÑивой.
УÑÑаÑело: ÐÑа возможноÑÑÑ Ð±Ñла Ñдалена из веб-ÑÑандаÑÑов. ХоÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе бÑаÑзеÑÑ Ð¿Ð¾-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ ÐµÑ, она Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² пÑоÑеÑÑе ÑдалениÑ. Ðе иÑполÑзÑйÑе ÐµÑ Ð½Ð¸ в ÑÑаÑÑÑ , ни в новÑÑ Ð¿ÑоекÑÐ°Ñ . СÑÑаниÑÑ Ð¸Ð»Ð¸ веб-пÑиложениÑ, иÑполÑзÑÑÑие еÑ, могÑÑ Ð² лÑбой Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑломаÑÑÑÑ.
Сводка
ÐеÑод __defineGetter__() пÑивÑзÑÐ²Ð°ÐµÑ ÑвойÑÑво обÑекÑа к ÑÑнкÑии, вÑзÑваемой каждÑй Ñаз пÑи поиÑке ÑÑого ÑвойÑÑва.
СинÑакÑиÑ
obj.__defineGetter__(prop, func)
ÐаÑамеÑÑÑ
ÐпиÑание
ÐеÑод __defineGetter__() позволÑÐµÑ Ð¾Ð¿ÑеделиÑÑ Ð³ÐµÑÑÐµÑ Ð½Ð° Ñже ÑÑÑеÑÑвÑÑÑем обÑекÑе.
ÐÑимеÑÑ
// ÐеÑÑандаÑÑнÑй и ÑÑÑаÑевÑий ÑпоÑоб
const o = {};
o.__defineGetter__("gimmeFive", function () {
return 5;
});
console.log(o.gimmeFive); // 5
// СпоÑобÑ, ÑовмеÑÑимÑе Ñо ÑÑандаÑÑом
// ÐÑполÑзование опеÑаÑоÑа get
const o = {
get gimmeFive() {
return 5;
},
};
console.log(o.gimmeFive); // 5
// ÐÑполÑзование Object.defineProperty()
const o = {};
Object.defineProperty(o, "gimmeFive", {
get: function () {
return 5;
},
});
console.log(o.gimmeFive); // 5
СпеÑиÑикаÑии
Ðе ÑвлÑеÑÑÑ ÑаÑÑÑÑ ÐºÐ°ÐºÐ¾Ð¹-либо ÑпеÑиÑикаÑии.
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
СмоÑÑиÑе Ñакже
Object.prototype.__defineSetter__()- опеÑаÑоÑ
get Object.defineProperty()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()- Ð ÑководÑÑво по JS: опÑеделение геÑÑеÑов и ÑеÑÑеÑов
- [ÐапиÑÑ Ð² блоге] УÑÑаÑевание __defineGetter__ и __defineSetter__ (англ.)
- Firefox bug 647423