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