JavaScript學習隨記——屬性類型

<!DOCTYPE HTML>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>屬性類型</title></head>		<body><script type="text/javascript" charset="utf-8">/*** ECMAScript 中有兩種屬性:數據屬性和訪問器屬性。* * 要修改屬性默認的特性,必須使用ECMAScript5的Object.defineProperty()方法。* 語法:Object.defineProperty(屬性所在的對象,屬性名字,描述符對象);* 注意:描述符對象的屬性必須是:configurable、enumerable、writable 和 value 。* * 描述符對象屬性:* 		configurable:[true|false]表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問器屬性。* 		enumerable:[true|false]表示能否通過 for-in 循環返回屬性。* 		writable:[true|false]表示能否修改屬性的值。* 		value:包含這個屬性的數據值,讀取屬性值得時候,從這個位置讀;寫入屬性值得時候,把新值保存在這個位置。這個特性的默認值為undefined。*/var person = {};//定義屬性特性Object.defineProperty(person,"name",{writable:false,	//不可寫value:"張三"		//屬性的值為"張三"});console.log(person.name);	person.name = "李四";console.log("新賦值后:"+person.name);/********************* 【開始】運行結果 ********************張三新賦值后:張三********************* 【結束】運行結果 ********************/	
</script>		<script type="text/javascript" charset="utf-8">var person1 = {};//定義屬性特性//注: 一旦把屬性定義為不可配置,就不能再把它變回可配置了,此時,再調用 Object.defineProperty() 方法修改除 writable 之外的特性,都會導致錯誤。Object.defineProperty(person1,"name",{configurable:false,	//不能從對象中刪除屬性value:"張三1"		//屬性的值為"張三1"});console.log(person1.name);	delete person.name;console.log("刪除屬性后:"+person1.name);//從定義屬性特性(運行時報錯)Object.defineProperty(person1,"name",{configurable:true,	//可以從對象中刪除屬性value:"張三2"		//屬性的值為"張三2"});console.log("從定義屬性特性后:"+person1.name);/********************* 【開始】運行結果 ********************張三1刪除屬性后:張三1TypeError: can't redefine non-configurable property "name"Object.defineProperty(person1,"name",{********************* 【結束】運行結果 ********************/		
</script>	<script type="text/javascript" charset="utf-8">/*** 訪問器屬性*/var book = {_year:2004,edition:1};//定義訪問器屬性/*** 訪問器屬性有如下4個特性。* configurable:[true|false]表示能否通過delete刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為數據屬性。* enumerable:[true|false]表示能否通過 for-in 循環返回屬性。* get:在讀取屬性是調用的函數,默認值為 undefined。* set:在寫入屬性是調用的函數,默認值為 undefined。* */Object.defineProperty(book,"year",{get:function(){return this._year;},set:function(val){if(val > 2000){this._year = val;this.edition = val - 2000;}}});book.year = 2005;console.log(book);console.log(book.year);console.log(book.edition);/********************* 【開始】運行結果 ********************Object { _year=2005,  edition=5}20055********************* 【結束】運行結果 ********************/	
</script><script type="text/javascript" charset="utf-8">/*** 定義多個屬性Object.defineProperties()方法。* 語法:Object.defineProperties(添加和修改其屬性的對象,對象的屬性);*/var book1 = {};Object.defineProperties(book1,{//數據屬性_year:{writable:true,	// 不寫的話默認為 falsevalue:2000},//數據屬性edition:{writable:true,value:0},//訪問器屬性year:{get:function(){return this._year;},set:function(newVal){if(newVal > this._year){this.edition += (newVal - this._year)*2;this._year = newVal;}}}});book1.year = 2005;console.log("year:"+book1.year+",edition:"+book1.edition);book1.year = 2007;console.log("year:"+book1.year+",edition:"+book1.edition);//讀取屬性的特性var descriptor = Object.getOwnPropertyDescriptor(book1,"_year");console.log(descriptor.value);			//2007console.log(descriptor.configurable);	//falseconsole.log(typeof(descriptor.get));	//undefinedvar descriptor = Object.getOwnPropertyDescriptor(book1,"year");console.log(descriptor.value);			//undefinedconsole.log(descriptor.configurable);	//falseconsole.log(typeof(descriptor.get));	//function/********************* 【開始】運行結果 ********************year:2005,edition:10year:2007,edition:142007falseundefinedundefinedfalsefunction********************* 【結束】運行結果 ********************/	
</script>			</body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373670.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Shell if else語句

if 語句通過關系運算符判斷表達式的真假來決定執行哪個分支。Shell 有三種 if ... else 語句&#xff1a; if ... fi 語句&#xff1b;if ... else ... fi 語句&#xff1b;if ... elif ... else ... fi 語句。1) if ... else 語句 if ... else 語句的語法&#xff1a; if [ ex…

過濾日志中不相關的堆棧跟蹤行

我喜歡堆棧痕跡。 不是因為我喜歡錯誤&#xff0c;而是因為發生錯誤的那一刻&#xff0c;堆棧跟蹤是無價的信息源。 例如&#xff0c;在Web應用程序中&#xff0c;堆棧跟蹤向您顯示完整的請求處理路徑&#xff0c;從HTTP套接字到過濾器&#xff0c;Servlet&#xff0c;控制器&a…

Can't create/write to file '/tmp/#sql_887d_0.MYD' (Errcode: 17)

lsof |grep "#sql_887d_0.MYD" 如果沒有被占用就可以刪掉 。 https://wordpress.org/support/topic/cant-createwrite-to-file-error Hello, just today I saw this kind of error on every page on my blog. WordPress database error: [Cant create/write to file …

python3怎么創建文件_Python3.5 創建文件的簡單實例

實例如下所示&#xff1a;#codingutf-8Created on 2012-5-29author: xiaochouimport osimport timedef nsfile(s):The number of new expected documents#判斷文件夾是否存在&#xff0c;如果不存在則創建b os.path.exists("E:\\testFile\\")if b:print("File …

Dijkstra 最短路算法(只能計算出一條最短路徑,所有路徑用dfs)

上周我們介紹了神奇的只有五行的 Floyd 最短路算法&#xff0c;它可以方便的求得任意兩點的最短路徑&#xff0c;這稱為“多源最短路”。本周來來介紹指定一個點&#xff08;源點&#xff09;到其余各個頂點的最短路徑&#xff0c;也叫做“單源最短路徑”。例如求下圖中的 1 號…

JavaScript學習隨記——錯誤類型

錯誤類型&#xff1a; 執行代碼期間可能會發生的錯誤有多種類型。每種錯誤都有對應的錯誤類型&#xff0c;而當錯誤發生時&#xff0c;就會拋出相應類型的錯誤對象。 ECMA-262定義的7種錯誤類型 Error&#xff1a; 是錯誤的基類型&#xff0c;其他錯誤類型都繼承該類型。Error…

多個集合中的共同和獨特元素

本周&#xff0c;我們將暫時中斷較高級別的問題和技術文章&#xff0c;以解決我們中許多人可能面臨的一些代碼問題。 沒什么花哨的或太辛苦的&#xff0c;但是有一天它可能會節省您15分鐘的時間&#xff0c;偶爾回到基礎上也很不錯。 因此&#xff0c;讓我們開始吧。 有時&…

2016給自己一個交代

一、前言 在關于技術上的學習&#xff0c;常常有這樣那樣的計劃&#xff0c;而最終一個都沒有真正的落實。零散的學習&#xff0c;終究需要系統總結&#xff0c;才能使自己有所沉淀。從畢業至今&#xff0c;我一直在忙碌&#xff0c;為公司付出自己的很多很多&#xff0c;卻只不…

洛克人紅色思考型機器人叫什么_稻船敬二新企劃《紅色灰燼》 依然是機器人風格...

稻船敬二離開CAPCOM之后玩家們紛紛感嘆《洛克人》系列將再無續作&#xff0c;不過在單飛的這段時間里&#xff0c;稻船敬二還是創作了諸如《蒼藍雷霆 剛巴爾特》《Mighty No.9》等類似洛克人風格的作品。其名下的團隊comcept的最新作《Mighty No.9》即將于9月18日發售&#xff…

常見對話框

(1)普通對話框 // 點擊按鈕 彈出一個普通對話框public void click1(View v) {// 構建AlertDialogAlertDialog.Builder builder new Builder(this);builder.setTitle("警告");builder.setMessage("世界上最遙遠的距離是沒有網絡");builder.setPositiveButt…

JavaScript學習隨記——面向對象編程(繼承)

Example:基于原型鏈的繼承 <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>面向對象編程&#xff08;OOP&#xff09;</title></head> <body>…

NSCharacterSet

先上個例子&#xff1a; NSString * str1 [nameInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; NSString * str2 [passwdInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; […

Apache Mahout:構建垃圾郵件過濾器服務器

Lucene發生了一些相當有趣的事情。 它最初是作為一個庫&#xff0c;然后其開發人員開始基于它添加新項目。 他們開發了另一個開源項目&#xff0c;該項目將向Lucene添加爬網功能&#xff08;以及其他功能&#xff09;。 Nutch實際上是任何人都可以使用或修改的功能齊全的Web Se…

建模步驟_古建設計 | sketchup建模步驟教程(簡易入門版)

前言本篇教程主要是針對古建建模入門者。小N給大家分享一套我相對簡易的建模步驟。(PS&#xff1a;但是估計有些人可能會感覺我做的東西已經繁瑣了……)因為主要是為了讓大家熟悉、入門和好記憶。所以講的東西&#xff0c;小N我會相對簡單&#xff0c;有些細節的內容不會更多展…

JavaScript模塊化

JavaScript模塊化的實現方式&#xff1a; <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>模塊化</title></head> <body><script type&quo…

Linux下面的IO模型

1. Linux下的五種I/O模型 阻塞I/O模型&#xff1a; 一直阻塞 應用程序調用一個IO函數&#xff0c;導致應用程序阻塞&#xff0c;等待數據準備好。 如果數據沒有準備好&#xff0c;一直等待….數據準備好了&#xff0c;從內核拷貝到用戶空間,IO函數返回成功指示。 我們 第一…

改變導航欄上邊的狀態欄顏色

#pragma mark - 改變狀態欄顏色 -(UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; }轉載于:https://www.cnblogs.com/block123/p/5195203.html

PIT和TestNG突變測試簡介

變異測試是一種技術&#xff0c;它可以發現測試未涵蓋代碼的哪些部分。 它類似于代碼覆蓋范圍 &#xff0c;但變異測試不限于在測試期間執行給定行的事實。 這個想法是修改生產代碼&#xff08;引入突變&#xff09;&#xff0c;這應該改變其行為&#xff08;產生不同的結果&am…

JavaScript內存管理——優化內存占用

使用具備垃圾收集機制的語言編寫程序&#xff0c;開發人員一般不必操心內存管理的問題。但是&#xff0c;JavaScript在進行內存管理及垃圾收集時面臨的問題還是有點與眾不同。其中最主要的一個問題&#xff0c;就是分配給Web瀏覽器的可用內存數量通常要比分配給桌面應用程序的少…

Java 8的烹調方式– Lambda項目

什么是project lambda &#xff1a;Project lambda是用于以Java語言語法啟用lambda表達式的項目。 Lambda表達式是功能編程語言&#xff08;如lisp&#xff09;中的主要語法。 Groovy將是支持lambda表達式&#xff08;也稱為閉包&#xff09;的java的最接近親戚。 那么什么是la…