1.對象
1.1.對象的基本概念
1.1.1.為什么要有對象?
在JavaScript中,對象跟數組、函數一樣,都是一種復雜的數據類型,也叫引用數據類型。是一系列相關的屬性的集合,可以很方便的對變量和函數進行管理。
面向對象編程(Object Oritented Programming,簡稱OOP)是非常重要的軟件編程思想。
1.1.2.什么是對象
現在生活中:萬物皆對象,對象是一個具體的事物,一個具體的事物就會有行為和特征。
編程語言:在內存上一段有意義的區域被稱為對象,它也可以具有相關特征(屬性),執行具體的行為(方法)。
1.2.創建對象
1.2.1.通過構造函數創建
var hero = new Object(); //創建一個空的對象
hero.name = "奧特曼";
hero.skill = "打怪獸";
hero.attack = function(){
console.log("奧特曼發出光波打敗了小怪獸");
}
注意事項:
1.this一定要出現在方法中才有意義,不在方法中的this沒有意義。
2.在方法中出現的this,指的是當前對象,即調用這個方法的對象
#1.2.2.對象字面量
var person = {
name : "迪伽",
age : 2000,
sex : true;
fight : function(){
console.log("打怪獸");
}
};
1.3.批量創建對象
1.3.1.使用普通函數創建對象
優點:可以同時創建多個對象
缺點:創建出來的沒有具體的類型,都是Object類型的對象。
1.3.2.查看一個對象的類型
typeof 只能判斷基本數據類型
instanceof 判斷對象的數據類型
constructor.name 也可以獲取到對象的具體類型
1.3.3.構造函數
構造函數,是一種特殊的函數,主要用來在創建對象時就給對象初始化,即為對象的成員變量賦值,總與關鍵字new一起使用在創建對象的語句中。
關鍵字new所做的操作:
1.new會創建一個新的空對象
2.new會讓this指向這個對象
3.調用構造函數
4.new會返回這個創建好的對象
1.4.操作對象的屬性
1.4.1.點語法
//獲取對象屬性
//對象.屬性 獲取對象的某個屬性
//1.如果這個對象有這個屬性,就返回所對應的屬性值
//2.如果這個對象沒有這個屬性,則返回undefined
var name = teacher.name; //獲取到老師對象的姓名屬性
teacher.name = "蒼老師"; //將老師對象的姓名設置成為蒼老師
//設置對象屬性
//對象.屬性 = 值
//1.如果對象有這個屬性,修改這個屬性的值
//2.如果對象沒有這個屬性,則給這個對象添加一個新屬性
var name = teacher["name"]; //獲取到老師對象的姓名屬性
teacher["name"] = "蒼老師"; //將老師對象的姓名設置成為蒼老師
1.4.2.[]語法
也叫關聯數組方式,說白了就是把對象當作數組來看待。
//獲取對象屬性值
//對象["下標"] 把對象的屬性當成是數組里的元素
//設置對象屬性
//對象["下標"] = 值
注意:如果使用一個變量來獲取對象里的屬性時,必須要使用[]語法。
function Student(name,age){
this.name = name;
this.age = age;
}
var stu = new Student("張三",18);
var tmp = "name";
var name = stu.tmp; //undefined,在stu對象里找tmp屬性
name = stu[tmp]; //張三,這里的tmp是一個變量,它指的是"name"字符串
1.4.3.遍歷對象
使用for..in循環可以遍歷一個對象里的數據
var obj = {"name":"張三","age":18,"sex":"男"};
for(var x in obj){
console.log(obj[x]);
}
1.5.基本數據類型與引用數據類型
基本數據類型:也叫簡單數據類型,原始數據類型或者值類型。在存儲時,變量存的就是值本身。
引用數據類型:也叫復雜數據類型。在存儲時,變量中存儲的僅僅是地址(引用)。