Proxy handler.ownKeys() 方法
關於Proxy更多內容可以參閱JavaScript Proxy和Reflect一章節。
此方法可以攔截Object.getOwnPropertyNames()操作。
返回值是一個陣列。
語法結構:
[JavaScript] 純文字檢視 複製程式碼var p = new Proxy(target, { ownKeys: function (target) { //code } });
引數解析:
(1).target:可選,要被代理的目標物件。
可以被攔截的操作列表如下:
(1).Object.getOwnPropertyNames()。
(2).Object.getOwnPropertySymbols()。
(3).Object.keys()。
(4).Reflect.ownKeys()。
特別說明:
(1).返回值通常是一個包含屬性名稱陣列。
(2).返回陣列的元素的型別是字串型別或者Symbol型別。
(3).返回陣列必須包含所有target物件自有不可配置的屬性名稱。
(4).如果target物件是不可擴充套件的,那麼返回陣列必須且只包含target物件所有的自有屬性名稱。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼var antzone = { webName: "螞蟻部落", url: "www.softwhy.com", age: 4, address:"青島市南區" } var p = new Proxy(antzone, { ownKeys: function(target) { return ["a", "b", "c"]; } }); console.log(Object.getOwnPropertyNames(p))
Object.getOwnPropertyNames()方法會被攔截,返回值是一個自定義的陣列。
[JavaScript] 純文字檢視 複製程式碼執行程式碼var antzone = { webName: "螞蟻部落", url: "www.softwhy.com", age: 4, address:"青島市南區" } Object.defineProperty(antzone, "webName", { configurable: false }) var p = new Proxy(antzone, { ownKeys: function(target) { return ["url", "age", "address","a"]; } }); console.log(Object.getOwnPropertyNames(p))
返回的陣列必須要包含不可配置的屬性名稱。
[JavaScript] 純文字檢視 複製程式碼執行程式碼var antzone = { webName: "螞蟻部落", url: "www.softwhy.com", age: 4, address:"青島市南區" } Object.preventExtensions(antzone); var p = new Proxy(antzone, { ownKeys: function(target) { return ["url", "age", "address","webName","a"]; } }); console.log(Object.getOwnPropertyNames(p))
由於antzone物件是不可擴充套件的,那麼返回陣列元素值只包含antzone物件所有的自有屬性名稱。
相關文章
- Proxy.revocable() 方法
- Proxy handler.set() 方法
- Proxy handler.isExtensible() 方法
- Proxy handler.preventExtensions() 方法
- Proxy handler.construct() 方法Struct
- Proxy handler.has() 方法
- Proxy handler.get() 方法
- Proxy handler.deleteProperty() 方法delete
- Proxy handler.getOwnPropertyDescriptor() 方法
- Proxy handler.apply() 方法APP
- Proxy handler.setPrototypeOf() 方法
- Proxy handler.defineProperty() 方法
- Proxy handler.getPrototypeOf() 方法
- Proxy代理資料攔截方法
- 淺談jQuery中$.proxy()工具方法jQuery
- 使用 `open-uri.with_proxy` 方法開啟網頁網頁
- Many To Many could not initialize proxy – no Session的解決方法Session
- Proxy
- docker – nginx – proxy_pass + proxy_redirectDockerNginx
- ShardingSphere-Proxy 前端協議問題排查方法及案例前端協議
- proxy 收集
- Proxy invocationHandler
- Proxy模式模式
- 代理模式(Proxy)模式
- 2.1.2.3 Proxy PDBs
- JavaScript 之 ProxyJavaScript
- 初識Proxy
- Proxy 攔截
- Proxy介紹
- go 語言 proxy.golang.org timeout 無法訪問 處理方法Golang
- 安卓 no_proxy安卓
- 代理模式(Proxy Pattern)模式
- zabbix分散式proxy分散式
- What are the benefits of using an proxy?
- Proxy使用詳解
- 代理(Proxy)的解析
- Cglib proxy探祕CGLib
- Proxy例項set()