蘋果 HomePod 15.4 / tvOS 15.4 正式版更新推送:可接入酒店 WiFi
阿新 • • 發佈:2022-03-16
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);