面向对象精要-理解对象
1、創建對象
創建對象的兩種方法:
使用Object構造函數
var person2 = new Object(); person2.name="Qian";使用對象的字面形式
var person1={name:"Qian" };對象添加以及修改時JavaScript會在對象上調用[[Put]]和[[Set]]方法
2、屬性探測
2.1、使用“in”操作符
console.log("name" in person1)/*true*/2.2、使用“hasOwnProperty()”方法
console.log(person1.hasOwnProperty("name"))/*true*/3、刪除屬性
var person1={name:"Qian" }; delete person1.name; console.log(person1.hasOwnProperty("name"))/*false*/?
?
?4、枚舉屬性
?for-in:可枚舉屬性的內部特征都被設置為true,for-in循環會枚舉一個對象所有的可沒經驗屬性并將屬性名賦給一個變量
var person1 = {name:"Qian",age:12 } for(var item in person1){console.log(item)/*name age*/ }Object.keys():獲取一個對象的屬性列表已備程序使用
var person1 = {name:"Qian",age:12 }; var properties = Object.keys(person1); for(var i=0;i<properties.length;i++){console.log(i) }5、屬性類型
數據屬性:包含一個值
訪問器屬性:包含一個函數
6、屬性特征
通用特征:
是否可遍歷:[[Enumerable]]
是否可配置:[[Configurable]]---------->可以用delete刪除
修改屬性特征:Object.defineProperty()方法
例:修改某個對象屬性使其變成不可以枚舉且不可配置
Object.defineProperty(person1,"name",{enumerable:false,configurable:false }); console.log(person1.propertyIsEnumerable("name"))/*false*/數據屬性特征:
[[Value]]:創建對象時該特征自動賦值
[[Writable]]:布爾值,默認可以寫
定義完整的數據屬性:Object.defineProperty()
var person1 = {} Object.defineProperty(person1,"name",{value:"Qian",enumerable:true,configurable:true,writable:true })訪問器屬性特征:
[[Get]]
[[Set]]
定義多重屬性
Object.defieProperties()方法
var person1 = {} Object.defineProperties(person1, {_name:{value: "Qian",enumerable: true,configurable: true,writable: true},name:{get:function () {console.log("Reading me")}} })獲取屬性特征:
Object.getOwnPropertyDescriptor()方法
var person1 = {name:"Qian" } var deseciptor = Object.getOwnPropertyDescriptor(person1,"name"); console.log(deseciptor.enumerable)/*true*/7、禁止修改對象
[[Extensible]]:布爾值,設置為false,禁止新屬性的添加
7.1、禁止擴展
方法:使用Object.preventExtensions()
檢測方法:使用Object.isExtensible()
var person1 = {name:"Qian" } Object.preventExtensions(person1); console.log(Object.isExtensible(person1))/*false*/7.2、封印對象
方法:Object.seal()
檢測方法:使用Object.isSealed()
var person1 = {name:"Qian" }; Object.seal(person1); console.log(Object.isSealed(person1))/*true*/7.3、凍結對象
方法:Object.freeze()
檢測方法:Object.isFrozen()
var person1 = {name:"Qian" }; Object.freeze(person1); console.log(Object.isFrozen(person1))/*true*/總結:
1、將屬性視為鍵值對,對象視為屬性的哈希表有助于理解JavaScript對象。
2、你可以用點好或者中括號訪問對象的屬性
3、用in操作符檢測某個屬性是否存在
4、屬性的兩種類型:數據屬性和訪問器屬性
5、屬性的特征
6、鎖定對象的3中方式
轉載于:https://www.cnblogs.com/QianBoy/p/8859036.html
總結
以上是生活随笔為你收集整理的面向对象精要-理解对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CRC32算法笔记
- 下一篇: 自欺欺人的使用 NSTimer 销毁