JS面向?qū)ο?-1.認(rèn)識(shí)對(duì)象

對(duì)象在JS中有狹義對(duì)象和廣義對(duì)象

所謂的狹義對(duì)象 就是用{}這種字面量的形式定義的對(duì)象 它是一組屬性的無(wú)序集合

//狹義對(duì)象,就是一組值的封裝,除了4個(gè)值之外,什么都沒(méi)有

var obj = {

name: "小明",

age: "12",

sex: "男",

hobby: ['打球','看電視']

}

alert(obj.hobby[1])  //看電視

上面這個(gè)對(duì)象,表示一個(gè) 人 ,里面有4個(gè)屬性

比如我們現(xiàn)在不用對(duì)象 ,而是使用數(shù)組來(lái)存存儲(chǔ)一組剛才的值

var 0 =['小明',12,'男','['打球','看電視']']

alert(o[1])   //Uncaught SyntaxError: Unexpected number

數(shù)組只能存儲(chǔ)值 ,不能存儲(chǔ)健,換句話說(shuō),數(shù)組里的值 的 "語(yǔ)義"并不詳細(xì),對(duì)象除了能存儲(chǔ)值,還能存儲(chǔ)語(yǔ)義。

值 的語(yǔ)義,屬于上叫做keys,健

也就是說(shuō):對(duì)象就是一組值和語(yǔ)義的封裝

//廣義對(duì)象 是一個(gè)對(duì)象 ,但是你感覺(jué)它除了一組屬性還有別的東西

比如DOM元素是對(duì)象 ,但是和我們剛才說(shuō)的狹義對(duì)象”里面只有一組值 別的什么 都沒(méi)有“不同

// 下面這個(gè)O是一個(gè)DOM元素,它也是一個(gè)對(duì)象

var 0 =  document.getElementById('box');   //得到一個(gè)DOM對(duì)象

alert(typeof o);   //object

//下面給這個(gè)DOM元素添加屬性

o.name = "小 明";

o.age =12;

alert(o.age)

我們通過(guò)DOM方法得到了一個(gè)DOM對(duì)象,此時(shí)可以通過(guò)點(diǎn)語(yǔ)法來(lái)給這個(gè)對(duì)象添加屬性name,sex,hobboy屬性。此時(shí)可以通過(guò)o.name訪問(wèn)他的name屬性。此時(shí) ,你不能說(shuō)主穿上對(duì)象 只有name,age,hobby這三個(gè)屬性,別的什么 都沒(méi)有。因?yàn)檫@個(gè)o 畢竟是有一個(gè)HTML標(biāo)簽實(shí)體在頁(yè)面上

//數(shù)組也是對(duì)象

我們也可以通過(guò)點(diǎn)語(yǔ)法 給數(shù)組添加屬性

arr.name='小紅';

arr.age=12;

arr.hobby =['打架','抽煙','喝酒'];

alert(arr.sex);

說(shuō) 明數(shù)組有對(duì)象的一切特征,就是能夠添加屬性,但你不能說(shuō)這個(gè)數(shù)組此時(shí)只有name age hobby三個(gè)屬性

別的都沒(méi)有 ,畢竟他有一組數(shù)

函數(shù)也是對(duì)象 ,但是typeof運(yùn)算符檢測(cè)類(lèi)型 ,返回的結(jié)果 是function,不是object,這是系統(tǒng)規(guī)定,但是
function也是object

function fun(a,b){

alert(a+b)

}

//此時(shí)我們要證明這個(gè)fun也是一個(gè)對(duì)象,怎么證明 ,給他加屬性,如果能加上屬性就說(shuō)明是對(duì)象

alert(typeof fun);  //function

fun.name ='小剛',

fun.age =34,

fun.hobby = ['lol','DOTA','cs']

alert(fun.name)

此時(shí)對(duì)象添加屬性成功,添加了三個(gè)屬性,但是你不能說(shuō)這個(gè)fun對(duì)象就只有三個(gè)屬性別的什么都沒(méi)有,因?yàn)樗吘?是一個(gè)函數(shù),能夠加圓括號(hào)執(zhí)行

再比如,正則表達(dá)式也是對(duì)象

var regexp = /\d/g;

alert(typeof regexp);  //object

regexp.name ='小青';

alert(regexp.name);

添加屬性成功 但你不能說(shuō)它只有這幾個(gè)屬性 畢竟它是一個(gè)正則

也就是說(shuō) 系統(tǒng)內(nèi)置的所有引用類(lèi)型值 都是對(duì)象 ,他們都能添加自定義屬性 并且能夠訪問(wèn)這些屬性

比如
{}對(duì)象

function函數(shù)

array數(shù)組

regexp正則表達(dá)式

DOM元素

window ,document,Math,Date對(duì)象

Number,String內(nèi)置包裝構(gòu)造函數(shù)得到的值

但是這些對(duì)象除了一組屬性之外,還有其他的東西,比如數(shù)組還有一組值;比如函數(shù)還有一組語(yǔ)句,能夠圓括號(hào)執(zhí)行

什么不是對(duì)象,就是系統(tǒng)的基本類(lèi)型值

數(shù)字不能加屬性,因?yàn)閿?shù)字是基本類(lèi)型值,不是對(duì)象

var a =100;

a.name ='小強(qiáng)';

a.age =12;

alert(a.age); //undefined

//a不是一個(gè)對(duì)象 a是通過(guò)字面量增加的

var str ='你好';

str.haha=123;

alert(str.haha) //undefined

字符串不能加屬性,因?yàn)樽址腔绢?lèi)型值,不是對(duì)象。

那么到底有什么性質(zhì),我們就稱(chēng)它是對(duì)象呢?能夠添加屬性。特別的,微觀層面,只要這個(gè)東西存放在堆內(nèi)存中,就可以認(rèn)為是一個(gè)對(duì)象。

最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,377評(píng)論 6 13
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,671評(píng)論 18 399
  • 終于要結(jié)束了哈,一開(kāi)始完全沒(méi)想到,會(huì)寫(xiě)這么多字,真的。 四戰(zhàn)時(shí)間:2016年12月 專(zhuān)業(yè):MBA 傳媒經(jīng)營(yíng)與管理 ...
    cuc胡靖明閱讀 659評(píng)論 10 5
  • 鬼鬼祟祟的做著, 自己最討厭的人。 什么時(shí)候變成這樣? 怎么可以這樣??! 在乎別人你就真的被左右了。 嘲笑吧,三十...
    心的光閱讀 164評(píng)論 0 0

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