非标准
该特性是非标准的，请尽量不要在生产环境中使用它！

已废弃
该特性已经从 Web 标准中删除，虽然一些浏览器目前仍然支持它，但也许会在未来的某个时间停止支持，请尽量不要使用该特性。

## 概述

`__defineGetter__` 方法可以将一个函数绑定在当前对象的指定属性上，当那个属性的值被读取时，你所绑定的函数就会被调用。

## 语法

    obj.__defineGetter__(prop, func)

### 参数

`prop`
  一个字符串，表示指定的属性名。
`func`
  一个函数，当 `prop` 属性的值被读取时自动被调用。

## 描述

`__defineGetter__ 方法可以为一个已经存在的对象设置（新建或修改）访问器属性，`而 对象字面量中的 get 语法 只能在新建一个对象时使用。

## 示例

    // 请注意，该方法是非标准的：

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

    // 请尽可能使用下面的两种推荐方式来代替：

    // 1. 在对象字面量中使用 get 语法
    var o = { get gimmeFive() { return 5; } };
    console.log(o.gimmeFive); // 5

    // 2. 使用 Object.defineProperty 方法
    var o = {};
    Object.defineProperty(o, 'gimmeFive', {
      get: function() {
        return 5;
      }
    });
    console.log(o.gimmeFive); // 5

## 规范

不属于任何规范。

## 浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

- Desktop
- Mobile

Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari
--- | --- | --- | --- | --- | ---
Basic support | (Yes) | (Yes) | 11 | (Yes) | (Yes)

Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile
--- | --- | --- | --- | --- | --- | ---
Basic support | (Yes) | (Yes) | (Yes) | ? | (Yes) | (Yes)

## 相关链接

- `Object.prototype.__defineSetter__()`
- `get` operator
- `Object.defineProperty()`
- `Object.prototype.__lookupGetter__()`
- JS 指南: 定义 Getter 和 Setter
- [个人博文] defineGetter__ 和 __defineSetter__已被废弃