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

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

## 概述

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

## 语法

    obj.__defineSetter__(prop, fun)

### 参数

`prop`
  一个字符串，表示指定的属性名。
`fun`
  一个函数，当试图去为 `sprop` 属性赋值时被调用。通常你要给这个函数指定一个参数：

      function(val) { . . . }

  `val`
    任意的参数名，在 fun 被调用时，该参数的值就是尝试给 `sprop` 属性所赋的值。

## 描述

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

## 规范

不属于任何规范。

## 浏览器兼容性

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.__defineGetter__()`
- `set` operator
- `Object.defineProperty()`
- `Object.prototype.__lookupSetter__()`
- JS 指南: 定义 Getter 和 Setter
- [个人博客] defineGetter__ 和 __defineSetter__已被废弃