Object.prototype.__defineGetter__()

Ця функціональність не рекомендована до використання на користь визначення гетерів за допомогою синтаксису ініціалізації об'єктів або API Object.defineProperty(). Хоча ця функціональність широко реалізована, вона описана у специфікації ECMAScript тільки задля legacy-використання. Цей метод не бажано використовувати, оскільки існують кращі альтернативи.

Метод __defineGetter__ прив'язує властивість об'єкта до функції, яка викликатиметься під час звернення до властивості.

Синтаксис

obj.__defineGetter__(prop, func)

Параметри

prop
Рядок, що містить ім'я властивості, яку треба прив'язати до наданої функції.
func
Функція, що прив'язується до вказаної властивості.

Значення, що повертається

undefined.

Опис

Метод __defineGetter__ дозволяє визначити гетер на існуючому об'єкті.

Приклади

// Нестандартний та не рекомендований спосіб

var o = {};
o.__defineGetter__('gimmeFive', function() { return 5; });
console.log(o.gimmeFive); // 5


// Стандартні способи

// Використання оператора get
var o = { get gimmeFive() { return 5; } };
console.log(o.gimmeFive); // 5

// Використання Object.defineProperty
var o = {};
Object.defineProperty(o, 'gimmeFive', {
  get: function() {
    return 5;
  }
});
console.log(o.gimmeFive); // 5

Специфікації

Специфікація Статус Коментар
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.prototype.__defineGetter__()' in that specification.
Draft Включено у (нормативний) додаток для додаткової legacy-функціональності ECMAScript для веб-переглядачів (зауважте, що специфікація кодифікує те, що вже реалізовано).

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
__defineGetter__
Deprecated
Chrome Full support 1Edge Full support 12Firefox Full support 1
Notes
Full support 1
Notes
Notes Starting with Firefox 48, this method can no longer be called at the global scope without any object. A TypeError will be thrown otherwise. Previously, the global object was used in these cases automatically, but this is no longer the case.
IE Full support 11Opera Full support YesSafari Full support YesWebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support 1.0nodejs Full support Yes

Legend

Full support  
Full support
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.
See implementation notes.
See implementation notes.

Див. також