js物件可擴充套件性和屬性的四個特性(下)
# js物件可擴充套件性和屬性的四個特性(下)
一、前言
再次花時間回顧一下基礎,畢竟要想樓建的好,地基就要牢固,嘻嘻!
- 在開始之前需要具備對prototype、__proto__、constructor有一定得了解,可以看看我之前寫的一篇文章=>通道
- 之前的使用者管理系統已經差不多了,順便加了個socket聊天的,但是由於做java後臺的哪個朋友節奏跟不上來,所以即時聊天的後臺就是node+socket-io寫的,由於使用者列表也涉及比較多的使用者隱私問題,所以我設定了頁面許可權和介面許可權,然後下面開放的幾個賬號就只能看到幾個頁面而已,哈哈。=>通道
- 體驗賬號1:賬號:“123456”。密碼:“123456”
體驗賬號2:賬號:“123123”。密碼:“123123”
二、目錄
- 物件屬性的四個特性
- 物件的可擴充套件性
- 刪除屬性
- 檢測屬性
- 列舉屬性
- 屬性的getter和setter
三、刪除屬性
1、用指定物件作為原型建立物件
Object.create()
說明:
- 第一個引數是新建物件的原型
- 第二個引數也就是屬性和特性描述的集合
const log = console.log; //返回資料資料的描述 var aa = Object.create({ x: 1 }, { y: { value: 1, writable: false, enumerable: false, configurable: true } }) log(aa) log(Object.getOwnPropertyDescriptor(aa,'y'))
2、刪除物件屬性
delete
說明:
- delete只是斷開屬性和宿主物件的聯絡,而不會去操作屬性中的屬性。
- delete只能刪除自有屬性,不能刪除繼承屬性。
- delete不能刪除可配置為false的屬性
const log = console.log; //返回資料資料的描述 var aa = {y:2} Object.defineProperty(aa, 'x', { value: 1, writable: true, enumerable: true, configurable: false }) log(aa); log(delete aa.x); log(delete aa.y); log(aa)
四、檢測屬性
1、檢測物件是否擁有某個屬性
in
說明:
- in運算子不僅僅回檢測物件自有屬性,還會檢測繼承屬性
const log = console.log;
var aa={x:1};
log('x' in aa);
log('y' in aa);
log('toString' in aa)
2、檢測物件是否擁有某個屬性
hasOwnProperty()
說明:
- hasOwnProperty只會檢測對物件自有屬性,不會檢測繼承屬性
const log = console.log;
var aa={x:1};
log(aa.hasOwnProperty('x'));
log(aa.hasOwnProperty('y'));
log(aa.hasOwnProperty('toString'))
3、檢測物件是否擁有某個屬性
propertyIsEnumerable()
說明:
- propertyIsEnumerable屬性只檢測自有屬性的可列舉屬性
const log = console.log;
var aa = { x: 1 };
Object.defineProperty(aa, 'y', {
value: 1,
writable: true,
enumerable: false,
configurable: true
})
log(aa)
log(aa.propertyIsEnumerable('x'));
log(aa.propertyIsEnumerable('y'));
log(aa.propertyIsEnumerable('toString'))
五、列舉屬性
1、列舉物件中的屬性
Object.keys()
const log = console.log;
var aa = { x: 1 ,y:2};
Object.defineProperty(aa, 'z', {
value: 3,
writable: true,
enumerable: false,
configurable: true
})
log(aa)
log(Object.keys(aa))
2、列舉物件中的屬性
Object.getOwnPropertyNames()
const log = console.log;
var aa = { x: 1 ,y:2};
Object.defineProperty(aa, 'z', {
value: 3,
writable: true,
enumerable: false,
configurable: true
})
log(aa)
log(Object.getOwnPropertyNames(aa))
六、屬性的getter和setter
說明:
- 由get和set定義的屬性叫做存取器屬性
- 不同於普通屬性它不是一個具體的值,而是由兩個方法構成
const log = console.log;
var aa = { x: 1 ,
get y(){
return 1000;
},
set y(value){
this.x+=value;
}
};
log(aa)
aa.y=1;
log(aa)
相關推薦
js物件可擴充套件性和屬性的四個特性(上)
# js物件可擴充套件性和屬性的四個特性(上) 一、前言 再次花時間回顧一下基礎,畢竟要想樓建的好,地基就要牢固,嘻嘻! 在開始之前需要具備對prototype、__proto__、constructor有一定得了解,可以看看我之前寫的一篇文章=>通道 之前的使用者管理系統已經差不多了,順便加了個s
js物件可擴充套件性和屬性的四個特性(下)
# js物件可擴充套件性和屬性的四個特性(下) 一、前言 再次花時間回顧一下基礎,畢竟要想樓建的好,地基就要牢固,嘻嘻! 在開始之前需要具備對prototype、__proto__、constructor有一定得了解,可以看看我之前寫的一篇文章=>通道 之前的使用者管理系統已經差不多了,順便加了個s
oracle事務的四個特性(ACID)
失敗 會話 狀態 服務 可能 ccf 保持 16px 其他 事務產生的背景 當在PL/SQL中同時操作多個SQL語句,比如通過DML語句添加、修改或刪除數據時,如何確保數據庫數據不會因為意外而倒置錯誤數據是一個非常重要的問題。 以倉庫發料系統為例,如果某一張領料單已經領
面向物件 4 面向物件可擴充套件性總結&練習
class Chinese: country='China' def __init__(self,name,age,sex): self.name=name self.age=age self
BPF的可移植性和CO-RE (Compile Once – Run Everywhere)
## BPF的可移植性和CO-RE (Compile Once – Run Everywhere) 在上一篇[文章](https://www.cnblogs.com/charlieroro/p/14140343.html)中介紹了提高socket效能的幾個socket選項,其中給出了幾個源於核心原始碼樹中的
Exchange 2013數據庫可移植性恢復用戶數據庫(一)
服務器 Exchange 案例講述:我目前環境中有一套Exchagne01和Exchange02服務器,全部是全角色安裝的exchange2013CU8的系統。這兩臺服務器同屬一個DAG組,由於特殊原因DAG的故障轉移群集出現問題,無法正常恢復,導致用戶郵箱不能訪問。目前發現Exchange01上的數
Exchange 2013數據庫可移植性恢復用戶數據庫(二)
服務器 Exchange 案例講述:我目前環境中有一套Exchagne01和Exchange02服務器,全部是全角色安裝的exchange2013CU8的系統。這兩臺服務器同屬一個DAG組,由於特殊原因DAG的故障轉移群集出現問題,無法正常恢復,導致用戶郵箱不能訪問。目前發現Exchange01上的數
高度可配置引數化UVM IP驗證環境(下)
本文轉自:http://www.eetop.cn/blog/html/28/1561828-3571698.html 5. 複用自適應引數化IP驗證環境 5.1 垂直複用(Veriti
【Django REST framework電商專案筆記】第10章 購物車, 訂單和支付寶支付功能(下)
Pycharm遠端除錯程式碼 第三方支付和第三方登入都有一個回撥的URl。一般指向伺服器的ip地址。 要完成能夠通過pycharm去除錯遠端的伺服器,回撥時就可以除錯程式碼。 如何將程式碼上傳到遠端伺服器 1、點選tools下的deploy點選configura
我和爬蟲有個約會(java)
我理解的爬蟲就是通過技術手段拿到網頁
我和spark有個約會(1)-Spark中的stage的劃分原理
我和spark有個約會(1)瞭解DAGScheduler 階段對stage的劃分原理 spark寬窄依賴 narrow dependencies:child rdd只依賴於parentrdd[s]的部分固定的partition wide d
常見的檔案字尾名和對應的編輯工具(下)
繼續發下半段S-Z,沒看上半段的小夥伴們可以點這個連結 S 彙編原始碼檔案 S3I Scream Tracker v3裝置 S3M Scream Tracker v3的聲音模組檔案 SAM Ami專業文件;8位抽樣資料 8 ^" I2 g7 i2 w2 ASAV 遊
MySql資料庫優化必須注意的四個細節(方法)
MySQL 資料庫效能的優化是 MySQL 資料庫發展的必經之路, MySQL 資料庫效能的優化也是 MySQL 資料庫前進的見證,下文中將從從4個方面給出了 MySQL 資料庫效能優化的方法。 1、選取最適用的欄位屬性 MySQL 可以很好的支援大資料量的存取,但是一般說來,資料庫中的表越小,在它上面
ES6-物件的擴充套件-屬性的可列舉性和遍歷
可列舉 物件的每一個屬性都有一個描述物件,用來控制該屬性的行為。Object.getOwnpropertyDescriptor 方法可以獲取該屬性的描述物件。 let obj = { foo: 123 }; Object.getOwnPropertyDescriptor(
面向物件 7 封裝之如何實現屬性的隱藏&封裝的意義&封裝可擴充套件性&property
封裝之如何實現屬性的隱藏 # class A: # __x=1 #'_A__x': 1 # # def __init__(self,name): # self.__name=name #self.__A__name=name
管理系統中風險是系統可用性和可擴充套件性的關鍵
文章概要 雖然我們經常提到風險管理,但還沒有闡述我們對風險的觀點,以及如何進行風險管理。本文大致涵蓋了在任何的技術或業務決策過程中如何確定和管理風險。風險管理是提高和保持可用性及可擴充套件性的最基本和最重要的方面。 風險管理的重要性 商業在本質上是一種冒險的嘗試。舉一些風險的例子
ZStack雲端計算架構探祕(三): 超強靈活性和可擴充套件性
在前面探祕一和探祕二中,我們已經分享了ZStack的拓撲結構和如何實現超高可伸縮性的能力。還記得我們在Why ZStack中說的,穩定性和靈活性是IaaS需要解決的兩大問題。今天我們就來揭開ZStack超強靈活性的奧祕。 今天的內容非常的豐富,我們先來看一下什麼是靈活性。所
Visual Studio 2008 可擴充套件性開發(五):操作Solution、Project和ProjectItem
string classLibProjTemplatePath = sln.GetProjectTemplate("ClassLibrary.zip", "CSharp");string domainProjName = slnName +"."+"Domain";sln.AddFromTemplat
Position屬性四個值:static、fixed、absolute和relative的區別
區別 出現 進行 blog index ont 屬性 -i 通過 1、static(靜態定位):默認值。沒有定位,元素出現在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。 2、relative(相對定位):生成相對定位的元
C++的可移植性和跨平臺開發
file volatil rec 遍歷 程序包 arc scu 千萬 之前 概述 今天聊聊C++的可移植性問題。如果你平時使用C++進行開發,並且你對C++的可移植性問題不是非常清楚,那麽我建議你看看這個系列。即使你目前沒有跨平臺開發的需要,了解可移植性方面的知識對你還