初探JavaScript魅力4

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ǔ)的僅僅是地址(引用)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容