Java併發容器大合集
1.面向物件的概述
將同一類事物的操作程式碼封裝成物件,將用到的變數和函式作為物件的屬性和方法,然後通過物件去呼叫這樣可以的屬性和方法。然後通過物件去呼叫,這樣可以使程式碼結構清晰,層次分明
2.面向物件的特徵
1.封裝性
2.繼承性
3.多型性
3.物件屬性
物件屬性
(JavaScript 物件中的)名稱:值對被稱為屬性。
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
屬性 | 屬性值 |
---|---|
firstName | Bill |
lastName | Gates |
age | 62 |
eyeColor | blue |
物件方法
物件也可以有方法。
方法是在物件上執行的動作。
方法以函式定義被儲存在屬性中。
屬性 | 屬性值 |
---|---|
firstName | Bill |
lastName | Gates |
age | 62 |
eyeColor | blue |
fullName | function() {return this.firstName + " " + this.lastName;} |
方法是作為屬性來儲存的函式。
4.物件的定義
物件的定義是通過“{} ”語法來實現的 物件的成員以鍵值對的形式存放在{}中 多個成員用逗號隔開,
var o1={}; var o2={name:'Jon'};var o3={name:'Jim',age:19,genter:'男'}
5.
JS 類
JS Async
JS HTML DOM
- DOM 簡介
- DOM 方法
- DOM 文件
- DOM 元素
- DOM HTML
- DOM 表單
- DOM CSS
- DOM 動畫
- DOM 事件
- DOM 事件監聽程式
- DOM 導航
- DOM 節點
- DOM 集合
- DOM 節點列表
JS Browser BOM
JS Web API
- Web API 簡介
- Web Form API
- Web History API
- Web Storage API
- Web Worker API
- Web Fetch API
- Web Geolocation API
JS AJAX
JS JSON
- JSON 簡介
- JSON 語法
- JSON vs XML
- JSON 資料型別
- JSON 解析
- JSON 字串化
- JSON 物件
- JSON 陣列
- JSON 伺服器
- JSON PHP
- JSON HTML
- JSON JSONP
JS vs jQuery
JS 例項
JS 參考手冊
建站手冊
關於 W3School
幫助 W3School
JavaScript 物件
真實生活中的物件、屬性和方法
在真實生活中,汽車是一個物件。
汽車有諸如車重和顏色等屬性,也有諸如啟動和停止的方法:
物件 | 屬性 | 方法 |
---|---|---|
car.name = porsche car.model = 911 car.length = 4499mm car.color = white |
car.start() car.drive() car.brake() car.stop() |
所有汽車都擁有同樣的屬性,但屬性值因車而異。
所有汽車都擁有相同的方法,但是方法會在不同時間被執行。
JavaScript 物件
您之前已經學到,JavaScript 變數是資料值的容器。
這段程式碼把一個單一值(porsche)賦給名為 car 的變數:
var car = "porsche";
物件也是變數。但是物件包含很多值。
這段程式碼把多個值(porsche, 911, white)賦給名為 car 的變數:
var car = {type:"porsche", model:"911", color:"white"};
值以名稱:值對的方式來書寫(名稱和值由冒號分隔)。
JavaScript 物件是被命名值的容器。
物件屬性
(JavaScript 物件中的)名稱:值對被稱為屬性。
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
屬性 | 屬性值 |
---|---|
firstName | Bill |
lastName | Gates |
age | 62 |
eyeColor | blue |
物件方法
物件也可以有方法。
方法是在物件上執行的動作。
方法以函式定義被儲存在屬性中。
屬性 | 屬性值 |
---|---|
firstName | Bill |
lastName | Gates |
age | 62 |
eyeColor | blue |
fullName | function() {return this.firstName + " " + this.lastName;} |
方法是作為屬性來儲存的函式。
例項
var person = {
firstName: "Bill",
lastName : "Gates",
id : 678,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
5.this 關鍵詞
在函式定義中,this
引用該函式的“擁有者”。
在上面的例子中,this
指的是“擁有” fullName 函式的 person 物件。
換言之,this.firstName
的意思是 this 物件的 firstName 屬性。
6.物件的訪問
訪問物件屬性
您能夠以兩種方式訪問屬性:
objecName.propertyName
或者
objectName["propertyName
物件成員的遍歷
var obj={name:'Tom',age:16}; for(var k in obj){ console.log(k+'-'+obj[k]); }
深拷貝與淺拷貝
拷貝(copy)是指將一個目標資料複製一份,形成兩個個體。在前面的開發中,若將一個
基本資料型別(數值、字元型)的變數賦值給另一個變數,就可以得到兩個值相同的變數,改變
其中一個變數的值,不會影響另一個變數的值。但是,如果操作的目標是引用資料型別(如陣列、
物件),則會出現兩個變數指向同一個物件的情況,如果改變其中一個物件的成員,另一個物件
也會發生改變。具體示例如下。
var p1={name:'Jim',age:19}; var p2=p1; p2.name='Tom'; console.log(p1) //輸出結果。 Object {name:'Tom',age:19} console.log(p2) //輸出結果。 Object {name:'Tom',age:19 console.log(p1===p2)
從執行結果可以看出,在將變數 p1 賦值給 p2 後,更改 p2 的成員,p1 的成員也會發生改
變。這種情況在 JavaScript 中稱之為淺拷貝( shallow copy )。例如,將上述程式碼中的物件“{name:
'Jim, age: 19)”想象成一個資料夾,該資料夾中儲存了 name 和 age 兩個檔案,而變數 p1 是鏈
接到這個資料夾的快捷方式。在執行“var p2 = p1;”操作時,是將快捷方式複製了一份,此時
兩個快捷方式指向了同一個資料夾,而不是對資料夾進行復制操作。
在實際開發中,淺拷貝可以節省記憶體開銷。因為一個物件可以儲存大量的資料,其佔用的內
存會比基本資料型別高。如果沒有淺拷貝機制,在將物件作為函式引數傳遞時,函式內部的實參
就會建立物件的副本,多佔用一份記憶體空間,尤其是進行函式巢狀呼叫或遞迴操作時,佔用空間
會越來越多。
與淺拷貝相對的是深拷貝(deep copy ),即真正建立一個物件的副本。若要實現深拷