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

構文

var p = new Proxy(target, {
  preventExtensions: function(target) {
  }
});

引数

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

target
ターゲットオブジェクト

戻り値

preventExtensions メソッドは真偽値を返さなければなりません。

説明

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

インターセプト

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

不変条件

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

  • Object.isExtensible(proxy) が false の場合、Object.preventExtensions(proxy)true のみ返せます。

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

var p = new Proxy({}, {
  preventExtensions: function(target) {
    console.log('called');
    Object.preventExtensions(target);
    return true;
  }
});

console.log(Object.preventExtensions(p)); // "called"
                                          // false

次のコードでは不変条件に違反します。

var p = new Proxy({}, {
  preventExtensions: function(target) {
    return true;
  }
});

Object.preventExtensions(p); // TypeError is thrown

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
[[PreventExtensions]] の定義
標準 初期定義
ECMAScript Latest Draft (ECMA-262)
[[PreventExtensions]] の定義
ドラフト  

ブラウザ実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応491222 なし3610
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応4949 あり2236105.0

関連情報

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

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