Proxy handler.isExtensible() 方法

admin發表於2019-06-17

關於Proxy更多內容可以參閱JavaScript Proxy和Reflect一章節。

此方法可以攔截Object.isExtensible()操作。

返回一個布林值,用來標識target物件是否可以擴充套件。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
var p = new Proxy(target, {
  isExtensible: function (target) {
    //code
  }
});

引數解析:

(1).target:原始目標物件。特別說明:返回的布林值必須與Object.isExtensible()返回值一致,否則報錯。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var p = new Proxy({}, {
  isExtensible: function(target) {
    return true;
  }
});
console.log(Object.isExtensible(p));

上面的程式碼中,Object.isExtensible()操作會被攔截。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var p = new Proxy({}, {
  isExtensible: function(target) {
    return true;
  }
});
console.log(Reflect.isExtensible(p));

Reflect.isExtensible()方法也可以被攔截。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var p = new Proxy({}, {
  isExtensible: function(target) {
    return false;
  }
});
console.log(Object.isExtensible(p));

程式碼會報錯,物件{}是可以擴充套件的,所以Object.isExtensible({})返回值是true,而上面程式碼中的handler.isExtensible()返回false,於是報錯。

相關文章