js中的對象具有動態(tài)特性:
- js支持在對象定義之后滤钱,動態(tài)的 添加 / 修改 / 刪除 / 查詢
- 對象的成員:對象的屬性和方法
- 對象:鍵值對的集合(key-value)或 屬性和方法的集合
- 屬性:定義在對象內(nèi)部的變量
- 方法:定義在對象內(nèi)部的函數(shù)
- 特性的說明:帶來了方便(更靈活),但是在使用的時候容易出錯(覆蓋)
對象的訪問方式:
- 點語法
- []語法 key必須是字符串類型的幔嫂,如果不是字符串類型那么就當(dāng)做一個變量來處理
動態(tài)的操作:
- 添加:如果當(dāng)前的屬性不存在呢蔫,那么就是添加
- 修改:如果當(dāng)前訪問的屬性存在,那么在設(shè)置的時候就是修改认然。
- 刪除:使用關(guān)鍵字 delete 語法:delete 對象.屬性
- 示例:
<script>
//01 創(chuàng)建空的對象
var obj ={};
//02 動態(tài)的添加成員(屬性|方法)
obj.name = "張三";
obj.age = 20;
obj.showName = function () {
console.log(this.name);
}
obj.showName();//張三
console.log(obj[name]);// 張三 name("張三")是字符串類型(賦值操作)
//console.log(obj[age]);報錯窑睁,因為age是數(shù)值類型
//03 修改成員
obj.name = "李四";
obj.showName = function () {
console.log(this.name);
}
obj.showName();//李四
//04 刪除成員
delete obj.age;
console.log(obj.age); //undefiend
//05 使用[]語法可以添加有空格的屬性
var test = {};
console.log(test);//Object {}
//設(shè)置屬性(添加屬性) 屬性名稱:background Color
test["background Color"] = "red";
console.log(test);//Object {background Color: "red"}
//06 使用[]語法添加方法
obj["showAge"] = function () {
console.log(this.age);
}
//07 使用[]語法調(diào)用方法
obj["showAge"]();
</script>
- 使用[]語法可能會遇到的一些隱形的坑
<script>
var obj = {
name:"張三",
age:20,
showName:function () {
console.log(this.name);
}
}
console.log(obj.name); //張三
//console.log(obj[age]); //報錯
//此處不報錯是因為 name是window的屬性
console.log(obj[name]); //undefined obj[name]相當(dāng)于obj['']
console.log(window.name); //空白(空)
</script>
- 在使用for...in遍歷字典的時候要使用[]來訪問字典的value值
var test = {};
//需求:復(fù)制obj對象中的屬性給test對象
for(var key in obj)
{
test[key] = obj[key];
}