`handler.get()` 方法用于拦截对象的读取属性操作。

## 语法

    var p = new Proxy(target, {
      get: function(target, property, receiver) {
      }
    });

### 参数

以下是传递给get方法的参数，`this上下文绑定在`handler对象上.

`target`
  目标对象。
`property`
  被获取的属性名。
`receiver`
  Proxy或者继承Proxy的对象

### 返回值

get方法可以返回任何值。

## 描述

`handler.get` 方法用于拦截对象的读取属性操作。

### 拦截

该方法会拦截目标对象的以下操作:

- 访问属性: `proxy[foo]和` `proxy.bar`
- 访问原型链上的属性: `Object.create(proxy)[foo]`
- `Reflect.get()`

### 约束

如果违背了以下的约束，proxy会抛出 `TypeError`:

- 如果要访问的目标属性是不可写以及不可配置的，则返回的值必须与该目标属性的值相同。
- 如果要访问的目标属性没有配置访问方法，即get方法是undefined的，则返回值必须为undefined。

## 示例

以下代码演示如何拦截属性值的读取操作。

    var p = new Proxy({}, {
      get: function(target, prop, receiver) {
        console.log("called: " + prop);
        return 10;
      }
    });

    console.log(p.a); // "called: a"
                      // 10

以下代码演示违反约束的情况。

    var obj = {};
    Object.defineProperty(obj, "a", {
      configurable: false,
      enumerable: false,
      value: 10,
      writable: false
    });

    var p = new Proxy(obj, {
      get: function(target, prop) {
        return 20;
      }
    });

    p.a; //会抛出TypeError

## 规范

Specification | Status | Comment
--- | --- | ---
ECMAScript 2015 (6th Edition, ECMA-262) [[Get]] | Standard | Initial definition.
ECMAScript Latest Draft (ECMA-262) [[Get]] | Draft |

## 浏览器兼容性

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 | ? | 18 (18) | ? | ? | ?

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

## 另见

- `Proxy`
- `handler`
- `Reflect.get()`