handler.isExtensible()

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

構文

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

引数

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

target
ターゲットオブジェクトです。

戻り値

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

説明

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

インターセプト

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

不変条件

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

  • Object.isExtensible(proxy) は Object.isExtensible(target) と同じ値を返さなければなりません。

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

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

console.log(Object.isExtensible(p)); // "called"
                                     // true

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

var p = new Proxy({}, {
  isExtensible: function(target) {
    return false;
  }
});

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

仕様

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

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
isExtensibleChrome 完全対応 49Edge 完全対応 12Firefox 完全対応 31IE 未対応 なしOpera 完全対応 36Safari 完全対応 10WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 31Opera Android 完全対応 36Safari iOS 完全対応 10Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報