06-javaScript基礎(chǔ)-對(duì)象

文章配套視頻

辨別JS中的對(duì)象

除了5種基本的數(shù)據(jù)類型,其它的全都是對(duì)象
Object就是一個(gè)對(duì)象

為什么要使用對(duì)象

基本數(shù)據(jù)類型都是單一的值, 比如: "itlike" , 123 , true等, 值和值之間沒有任何的聯(lián)系。

比如想要描述一個(gè)人?
如果使用基本數(shù)據(jù)類型的數(shù)據(jù),我們所創(chuàng)建的變量都是獨(dú)立,不能成為一個(gè)整體。

var name = "撩課學(xué)院";
var intro = "喜歡IT, 就上撩課";
var age = 108;
對(duì)象屬于一種復(fù)合的數(shù)據(jù)類型,在對(duì)象中可以保存多個(gè)不同數(shù)據(jù)類型的屬性。

JS中對(duì)象的分類

內(nèi)置對(duì)象

由ES標(biāo)準(zhǔn)中定義的對(duì)象,在任何的ES的實(shí)現(xiàn)中都可以使用
比如:String Number Boolean Function Object Math ....

宿主對(duì)象

由JS的運(yùn)行環(huán)境提供的對(duì)象,現(xiàn)在主要指由瀏覽器提供的對(duì)象
比如: BOM對(duì)象, DOM對(duì)象

自定義對(duì)象

我們自己創(chuàng)建的對(duì)象
比如: Person, Dog, ....

如何創(chuàng)建對(duì)象
1.構(gòu)造函數(shù)

構(gòu)造函數(shù)是專門用來創(chuàng)建對(duì)象的函數(shù)
使用new關(guān)鍵字調(diào)用的函數(shù),可以被稱為構(gòu)造函數(shù)(constructor)
var obj = new Object();

2.定義

在對(duì)象中保存的值稱為屬性
向?qū)ο筇砑訉傩? 對(duì)象.屬性名 = 屬性值
讀取對(duì)象中的屬性: 對(duì)象.屬性名:如果讀取對(duì)象中沒有的屬性,不會(huì)報(bào)錯(cuò)而是會(huì)返回undefined
修改對(duì)象的屬性值: 對(duì)象.屬性名 = 新值
刪除對(duì)象的屬性: delete 對(duì)象.屬性名

3.定義一個(gè)人

var obj = new Object();
//向obj中添加一個(gè)name屬性
obj.name = "謝霆鋒";
//向obj中添加一個(gè)gender屬性
obj.gender = "男";
//向obj中添加一個(gè)age屬性
obj.age = 38;
讀取  修改   刪除

屬性名和屬性值
1.屬性名
對(duì)象的屬性名不強(qiáng)制要求遵守標(biāo)識(shí)符的規(guī)范, 怎么寫都可以, 但還是按照標(biāo)準(zhǔn)來比較好!

var obj = new Object();
obj.name = "葉建華";
obj.if = "如果";
console.log(obj);

注意

如果要使用特殊的屬性名,不能采用.的方式來操作, 
需要使用另一種方式, 
語法: 對(duì)象["屬性名"] = 屬性值, 讀取也要用該方式

obj["666"] = 888;
console.log(obj["666"]);

var str = '666';
obj[str] = 888;
console.log(obj[str]);

2.屬性值

JS對(duì)象的屬性值,可以是任意的數(shù)據(jù)類型, 也可以是一個(gè)對(duì)象
obj.content = null;
obj.content = true;
obj.content = undefined;

調(diào)試
var obj2 = new Object();
obj2.name = "小花花";
obj.dog = obj2;

3.in 運(yùn)算符

定義:通過該運(yùn)算符可以檢查一個(gè)對(duì)象中是否含有指定的屬性, 如果有則返回true,沒有則返回false
語法:"屬性名" in 對(duì)象

基本類型和引用類型在堆棧中的表示
1.基本數(shù)據(jù)類型

String Number Boolean Null Undefined

2.引用數(shù)據(jù)類型

Object

3.區(qū)別

JS中的變量都是保存到棧內(nèi)存中的,
基本數(shù)據(jù)類型的值直接在棧內(nèi)存中存儲(chǔ),
值與值之間是獨(dú)立存在,
修改一個(gè)變量不會(huì)影響其他的變量
對(duì)象是保存到堆內(nèi)存中的,
每創(chuàng)建一個(gè)新的對(duì)象,
就會(huì)在堆內(nèi)存中開辟出一個(gè)新的空間,
而變量保存的是對(duì)象的內(nèi)存地址(對(duì)象的引用),
如果兩個(gè)變量保存的是同一個(gè)對(duì)象引用,
當(dāng)一個(gè)通過一個(gè)變量修改屬性時(shí),另一個(gè)也會(huì)受到影響

4.畫圖分析
5.注意

比較兩個(gè)基本數(shù)據(jù)類型的值時(shí),就是比較值。
比較兩個(gè)引用數(shù)據(jù)類型時(shí),
它是比較的對(duì)象的內(nèi)存地址,
如果兩個(gè)對(duì)象是一摸一樣的,但是地址不同,它也會(huì)返回false

對(duì)象字面量

使用對(duì)象字面量,可以在創(chuàng)建對(duì)象時(shí),直接指定對(duì)象中的屬性
語法:var 對(duì)象 = {屬性名:屬性值,屬性名:屬性值....};
對(duì)象字面量的屬性名可以加引號(hào)也可以不加,建議不加, 如果要使用一些特殊的名字,則必須加引號(hào)
格式:屬性名和屬性值是一組一組的名值對(duì)結(jié)構(gòu),和值之間使用:連接,多個(gè)名值對(duì)之間使用,隔開

案例:
var obj = { 
    name:"劉德華",
    age:50,
    gender:"男",
    friend:{name:"洗頭發(fā)"}
    };  
console.log(obj.friend);
            
?著作權(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)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,556評(píng)論 6 13
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,619評(píng)論 0 13
  • #謝謝水湄老師# 很幸運(yùn)讀了豆瓣紅人-水湄物語的書《跟錢錢學(xué)理財(cái)》,剛開始看有點(diǎn)不知所云,所以就在網(wǎng)上下載了電子書...
    笑笑愛笑smile閱讀 680評(píng)論 0 3
  • 去參加朋友女兒的喜宴,擁擠的大廳里人聲鼎沸,目光所及沒看到經(jīng)常見面的老友,就在靠邊的一張桌旁坐下。 聽到有人喊我的...
    善下歸海閱讀 552評(píng)論 0 8
  • 前言: 關(guān)于lua的特性不再贅述; 以下步驟均使用了apt-get進(jìn)行操作,免去了諸如ng-lua組件手動(dòng)加載等繁...
    Separes閱讀 5,708評(píng)論 0 1

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