MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

handler.defineProperty()

この翻訳は不完全です。英語から この記事を翻訳 してください。

これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。

概要

Object.defineProperty()に対するトラップです。

構文

var p = new Proxy(target, {
  defineProperty: function(target, property, descriptor) {
  }
});

引数

次の引数がdefineProperty メソッドに渡されます。thisはハンドラにバインドされます。

target
ターゲットオブジェクト
property
説明が検索されるプロパティ名.
descriptor
定義されたり変更されるプロパティに対する説明

戻り値

defineProperty メソッドには戻り値がありません。

説明

handler.defineProperty() メソッドはObject.defineProperty()に対するトラップです。

インターセプト

このトラップは下記の操作をインターセプトできます。:

不変条件

次の不変条件に違反している場合、プロキシはTypeErrorをスローします。:

  • ターゲットオブジェクトが拡張可能でない場合、プロパティは追加されません。
  • ターゲットオブジェクトの非設定独自のプロパティとして存在しない場合、プロパティは非設定であるとして追加されたり変更されたりできません。
  • ターゲットオブジェクトの対応する構成可能なプロパティが存在する場合、プロパティは非設定でないかもしれません。
  • プロパティが対応するターゲットオブジェクトを保つ場合、Object.defineProperty(target, prop, descriptor) は例外をスローしません。
  • 厳格なモードでは、definePropertyハンドラからのfalse 戻り値はTypeError 例外をスローします。

次のコードはObject.defineProperty()をトラップします。

var p = new Proxy({}, {
  defineProperty: function(target, prop, descriptor) {
    console.log("called: " + prop);
    return true;
  }
});

var desc = { configurable: true, enumerable: true, value: 10 };
Object.defineProperty(p, "a", desc); // "called: a"

仕様

仕様 ステータス コメント
ECMAScript 6 (ECMA-262)
The definition of '[[DefineOwnProperty]]' in that specification.
勧告候補 Initial definition.

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート ? 18 (18) ? ? ?
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート ? ? 18.0 (18) ? ? ?

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: shide55
 最終更新者: shide55,