對象的相關概念
什麼是對象?
在 JavaScript中,對象是一組無序的相關屬性和方法的集合
,所有的事物都是對象,例如字符串、數值、數組、函數等。 對象是由屬性和方法組成的。
- 屬性:事物的特徵,屬性就是內存中的變量(常用名詞)
- 方法:事物的行爲,方法是內存中的函數(常用動詞)
var obj = {
"name":"小李",
"sex":"男",
"age":18,
"height":170;
}
對象中爲每項數據設置了屬性名稱,可以訪問數據更語義化,數據結構清晰,表意明顯,方便開發者使用。JS中的對象表達結構更清晰,更強大。
創建對象的三種方式
- 利用字面量創建對象
var 對象名 = { 屬性名:屬性值 }
花括號 { 這裏麪包含了表達這個具體事物(對象)的屬性和方法;}
{ } 裏面採取鍵值對的形式表示
- 鍵:相當於屬性名
- 值:相當於屬性值,可以是任意類型的值(數字類型、字符串類型、布爾類型,函數類型等)
//創建一個star對象
var star = {
name : '小李',//以鍵值對的方式儲存的
age : 18,
sex : '男',
sayHi : function(){
alert('大家好啊~');
}
};
//調用star對象中的具體數據
console.log(star.name) // 調用star的name屬性
console.log(star['name']) // 調用star的 name屬性
star.sayHi(); //調用方法一定要加括號
- 上述對象中屬性的兩種調用方法
- 對象.屬性名 、這個小點 . 就理解爲“
的
”- 對象[‘屬性名’],注意方括號裏面的屬性
必須加引號
- 調用對象的方法
**對象.方法名() ,注意這個方法名字後面一定加括號
- 變量、屬性、函數、方法總結
- 屬性是對象的一部分,而變量不是對象的一部分,變量是單獨存儲數據的容器
- 變量:單獨聲明賦值,單獨存在
- 屬性:對象裏面的變量稱爲屬性,不需要聲明,用來描述該對象的特徵
方法是對象的一部分,函數不是對象的一部分,函數是單獨封裝操作的容器
- 函數:單獨存在的,通過“函數名()”的方式就可以調用
- 方法:對象裏面的函數稱爲方法,方法不需要聲明,使用“對象.方法名()”的方式就可以調用,方法用來描述該對象的行爲和功能。
- 利用 new Object 創建對象
1、創建空對象
2、給空對象添加屬性和方法
var andy = new Obect();
andy.name = '小李';
andy.age = 18;
andy.sex = '男';
andy.sayHi = function(){
alert('大家好啊~');
}
注意:
- Object() :第一個字母大寫
- new Object() :需要 new 關鍵字
- 使用的格式:對象.屬性 = 值;
- 利用構造函數創建對象
- 構造函數
** 構造函數:是一種特殊的函數,主要用來初始化對象,即爲對象成員變量賦初始值,它總與 new 運算符一起使用。我們可以把對象中一些公共的屬性和方法抽取出來,然後封裝到這個函數裏面。
- 構造函數的封裝格式:
function 構造函數名(形參1,形參2,形參3) {
this.屬性名1 = 參數1;
this.屬性名2 = 參數2;
this.屬性名3 = 參數3;
this.方法名 = 函數體;
}
-構造函數的調用格式
//obj接收構造函數創建的對象
var obj = new 構造函數名(實參1,實參2,實參3)
注意事項
- 構造函數約定首字母大寫。
- 函數內的屬性和方法前面需要添加 this ,表示當前對象的屬性和方法。
- 構造函數中不需要 return 返回結果。
- 當我們創建對象的時候,必須用 new 來調用構造函數。
其他
- 構造函數,如 Stars(),抽象了對象的公共部分,封裝到了函數裏面,它泛指某一大類(class)
- 創建對象,如 new Stars(),特指某一個,通過 new 關鍵字創建對象的過程我們也稱爲對象實例化
new關鍵字的執行步驟
> 1. new 構造函數可以在內存中創建了一個空的對象
> 2. this 就會指向剛纔創建的空對象
> 3. 執行構造函數裏面的代碼 給這個空對象添加屬性和方法
> 4. 返回這個對象
// new關鍵字執行過程
// 1. new 構造函數可以在內存中創建了一個空的對象
// 2. this 就會指向剛纔創建的空對象
// 3. 執行構造函數裏面的代碼 給這個空對象添加屬性和方法
// 4. 返回這個對象
function Star(uname, age, sex) {
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function(sang) {
console.log(sang);
}
}
var ldh = new Star('劉德華', 18, '男');
遍歷對象
for…in 語句用於對數組或者對象的屬性進行循環操作。
語法:
for (變量 in 對象名字) {
// 在此執行代碼
}
語法中的變量是自定義的,它需要符合命名規範,通常會將這個變量寫爲 k 或者 key。
for (var k in obj) {
console.log(k); // 這裏的 k 是屬性名
console.log(obj[k]); // 這裏的 obj[k] 是屬性值
}