物件 類和物件導向程式設計

2022-09-20 02:30:11 字數 1536 閱讀 2549

物件

物件是數個屬性無序的集合。

ecma-262使用一些內部特性來描述屬性的特徵(物件的屬性的特性)。

屬性分為資料屬性(定義屬性時使用)和訪問器屬性(獲取或設定屬性值時使用):

資料屬性

資料屬性包含乙個儲存資料值的位置。值會從這個位置讀取,也會寫入到這個位置。資料屬性有 4個特性描述它們的行為。

 [[configurable]]:表示屬性是否可以通過 delete 刪除並重新定義,是否可以修改它的特性,以及是否可以把它改為訪問器屬性。預設情況下,所有直接定義在物件上的屬性的這個特性都是 true,如前面的例子所示。

 [[enumerable]]:表示屬性是否可以通過 for-in 迴圈返回。預設情況下,所有直接定義在物件上的屬性的這個特性都是 true,如前面的例子所示。

 [[writable]]:表示屬性的值是否可以被修改。預設情況下,所有直接定義在物件上的屬性的這個特性都是 true,如前面的例子所示。

 [[value]]:包含屬性實際的值。這就是前面提到的那個讀取和寫入屬性值的位置。這個特性的預設值為 undefined。

將屬性顯式新增到物件之後,[[configurable]]、[[enumerable]]和[[writable]]都會被預設設定為 true,而[[value]]特性會被設定為指定的值。

訪問器屬性     

 [[configurable]]:表示屬性是否可以通過 delete 刪除並重新定義,是否可以修改它的特性,以及是否可以把它改為訪問器屬性。預設情況下,所有直接定義在物件上的屬性的這個特性都是 true,如前面的例子所示。

 [[enumerable]]:表示屬性是否可以通過 for-in 迴圈返回。預設情況下,所有直接定義在物件上的屬性的這個特性都是 true,如前面的例子所示。

 [[get]]:獲取函式,在讀取屬性時呼叫。預設值為 undefined。

 [[set]]:設定函式,在寫入屬性時呼叫。預設值為 undefined。

// 定義乙個物件,包含偽私有成員 year_和公共成員 edition

let book = ;

object.defineproperty(book, "year", ,

set(newvalue)

}});

book.year = 2018;

console.log(book.edition); // 2

year_中的下劃線常用來表示該屬性並不希望在物件方法的外部被訪問。

這是訪問器屬性的典型使用場景,即設定乙個屬性值會導致一些其他變化發生。

獲取函式和設定函式不一定都要定義。只定義獲取函式意味著屬性是唯讀的,嘗試修改屬性會被忽略。在嚴格模式下,嘗試寫入只定義了獲取函式的屬性會丟擲錯誤。類似地,只有乙個設定函式的屬性

是不能讀取的,非嚴格模式下讀取會返回 undefined,嚴格模式下會丟擲錯誤。

object.defineproperty(給其新增屬性的物件,屬性名稱,描述符物件):用來修改物件屬性的特性,如果省略第三個引數則會把屬性特性的值設定為false;

類和物件導向程式設計 初級

什麼是物件導向程式設計?假如我們要開發乙個坦克大戰的遊戲 我們這個遊戲有一些屬性 當前剩餘多少條命 沒命的話,遊戲結束,開始有3條命 當前遊戲的分數 每次殺死敵人得分 boss是否死亡 死亡重新開始遊戲,損失一條命 我們有乙個主角 坦克 它有一些屬性 等級 等級越高,攻擊力越強,初始1級 當前血量 ...

物件和物件導向

物件字面量 1 大括號包圍的部分 2 物件的質麵量就是乙個大括號 a var obj 鍵值對 b key 健 value 值 c key可以加 可以不加 d 健值對之間用 逗號隔開,不是分號 var obj2 console.log obj2.name obj2.fu json json 是資料格式...

java SE 類和物件導向

物件導向 將客觀世界中的事物描述為物件,通過抽象思維方法將需要解決的實際問題分解 們易於理解的物件模型,然後通過物件模型構建應用程式的功能。針對使用者提出的要求進行分析,並將分析的結果拼接成完整的個體,然後在把這個個體分塊完成,最後把所有完成的小個體整合在一起。人是怎麼想的,讓計算機按照人的想法去實...