1. 程式人生 > 資訊 >蘋果 HomePod 15.4 / tvOS 15.4 正式版更新推送:可接入酒店 WiFi

蘋果 HomePod 15.4 / tvOS 15.4 正式版更新推送:可接入酒店 WiFi

JS程式設計既有函數語言程式設計也有面向物件程式設計

簡單說一下面向物件:抽象現實世界

進入正題

建立物件的方式

1:傳統Object()的方式

1 var obj = Object()
2 obj.name = "yaokaixin"
3 obj.mood = "happy"
4 obj.age = 18
5 console.log(obj)

 

 

 2:現在喜歡的方式

1 var obj = {
2     name: "yaokaixin",
3     mood: "happy",
4     age: 18
5 }
6 console.log(obj)

 

 怎麼對屬性進行限制

第二種方式的屬性都是建立在物件裡面的,我們可以用屬性,描述符來限制屬性

需要用到Object.defineProperty() ----- 定義一個新屬性,或者修改一個物件現有屬性 具體用法見例子

資料屬性描述符(定義預設為false,修改預設為true)

 1 var obj = {
 2     name: "tyy",
 3     mood: "unhappy",
 4     hobby: "study",
 5     age: 18
 6 }
 7 //修改一個物件的現有屬性
 8 Object.defineProperty(obj, 'age', {
 9     value: 20
, //設定屬性的值 預設是undefined 10 configurable: true, //可配置的 代表屬性是否可以被修改特性或者刪除 11 // enumerable: false, //表示屬性是否可以通過for-in或者Object.keys()放回該屬性 12 writable: false, //表示是否可以修改屬性的值 13 14 }) 15 //定義一個新的屬性 16 Object.defineProperty(obj, 'heght', { 17 value: 45, //設定屬性的值 預設是undefined 18 configurable: true, //
可配置的 代表屬性是否可以被修改特性或者刪除 19 enumerable: true, //表示屬性是否可以通過for-in或者Object.keys()放回該屬性 20 writable: false, //表示是否可以修改屬性的值 21 22 }) 23 console.log(obj.age); 24 // obj.age = 18 25 console.log(obj.age); 26 console.log(Object.keys(obj));

存取屬性描述符(也是 定義為false 修改為true)

 1 var obj = {
 2     name: "tyy",
 3     age: 20
 4 }
 5 var money = 100000000000000
 6 Object.defineProperty(obj, 'money', {
 7     configurable: true, //表示屬性特性是否可以被修改,以及是否可以刪除該屬性
 8     enumerable: true, //表示是否可以使用for-in和Object.keys()遍歷物件
 9     get: function() { //獲取屬性時會執行的函式,預設undefined
10         console.log('我獲得值啦嘿嘿');
11         return money
12     },
13     set: function(value) { //設定屬性時會執行的函式,預設undefined
14         console.log('我設定值啦嘻嘻');
15         money = value
16     }
17 })
18 console.log(obj.money);
19 obj.money = 200000000000000
20 console.log(obj.money);