JavaScript對(duì)象(詳細(xì))
JavaScript對(duì)象
1.定義
對(duì)象是引用數(shù)據(jù)類(lèi)型,是保存復(fù)雜數(shù)據(jù)類(lèi)型的容器,它是多個(gè)屬性(數(shù)據(jù))和方法(功能)的集合
它允許動(dòng)態(tài)的添加和刪除屬性
2.對(duì)象的分類(lèi)
(1)內(nèi)建對(duì)象
由ES標(biāo)準(zhǔn)中定義的對(duì)象,在任何的ES的實(shí)現(xiàn)中都可以使用
比如:math string number boolean object...
(2)宿主對(duì)象
由js的運(yùn)行環(huán)境提供的對(duì)象,目前來(lái)講主要由瀏覽器提供的對(duì)象
比如BOM DOM
(3)自定義對(duì)象
由開(kāi)發(fā)人員自己創(chuàng)建的對(duì)象
3.定義對(duì)象
對(duì)象字面量
使用對(duì)象字面量,可以在創(chuàng)建對(duì)象時(shí),直接指定對(duì)象中的屬性
語(yǔ)法:{屬性名:屬性值,屬性名:屬性值...}
對(duì)象字面量的屬性名可以加引號(hào),也可以不加,建議不加
如果要使用一些特殊的名字,則必須加引號(hào)
以'{ }'作為邊界,屬性與屬性之間用','分開(kāi),屬性和屬性值之間使用':'隔開(kāi)
var obj={};
構(gòu)造函數(shù)創(chuàng)建對(duì)象
使用new關(guān)鍵字調(diào)用的函數(shù),是構(gòu)造函數(shù)constructor
構(gòu)造函數(shù)是專(zhuān)門(mén)用來(lái)創(chuàng)建對(duì)象的函數(shù)
使用typeof檢查一個(gè)對(duì)象時(shí),會(huì)返回object
var obj = new Object(); console.log(typeof obj);
4.訪(fǎng)問(wèn)對(duì)象中的屬性
點(diǎn)訪(fǎng)問(wèn)符 .
o.name => 'terry' o.age => 12
[]訪(fǎng)問(wèn)符
o['name'] => 'terry' o['age'] => 12
如果讀取對(duì)象中沒(méi)有的屬性,不會(huì)報(bào)錯(cuò)而是返回undefined
5.給對(duì)象添加屬性
對(duì)象.屬性=屬性值;
o.gender='女';
6.刪除對(duì)象屬性
delete 對(duì)象.屬性;
delete o.gender;
7.Object根構(gòu)造函數(shù)
所有的對(duì)象都直接或者間接繼承Object,都能調(diào)用Object原型里面的方法
var o=new Object(); var arr=new Array();
8.對(duì)象屬性的檢測(cè)
in 運(yùn)算符
通過(guò)該運(yùn)算符可以檢查一個(gè)對(duì)象中是否含有指定的屬性
如果有,返回true,沒(méi)有則返回false
語(yǔ)法:
"屬性名" in 對(duì)象
'name' in Obj;
9.引用傳遞和值傳遞
基本數(shù)據(jù)類(lèi)型使用值傳遞:基本數(shù)據(jù)類(lèi)型將值直接保存到內(nèi)存的棧區(qū)中
js中的變量都是保存在棧內(nèi)存中的 基本數(shù)據(jù)類(lèi)型的值是直接在棧內(nèi)存中存儲(chǔ) 值與值之間是獨(dú)立存在的,修改一個(gè)變量不會(huì)影響其他的變量
var a=123; var b=a; a++; console.log('a='+a); //124 console.log('b='+b); //123
引用數(shù)據(jù)類(lèi)型使用引用傳遞:引用數(shù)據(jù)類(lèi)型的引用地址保存在棧區(qū)中,實(shí)際的值保存在堆區(qū)中,該引用地址指向堆區(qū)中的空間
對(duì)象是保存到堆內(nèi)存中的,每創(chuàng)建一個(gè)新的對(duì)象,就會(huì)在堆內(nèi)存中開(kāi)辟出一個(gè)新的空間
而變量保存的是對(duì)象的內(nèi)存地址(對(duì)象的引用),如果兩個(gè)變量保存的是同一個(gè)對(duì)象引用
當(dāng)一個(gè)變量修改屬性時(shí),另一個(gè)也會(huì)受到影響
var obj=new Object(); obj.name='terry'; var obj2=obj; //修改obj的name屬性 obj.name='tom'; console.log(obj.name); //tom console.log(obj2.name); //tom
當(dāng)比較兩個(gè)基本數(shù)據(jù)類(lèi)型的值時(shí),就是比較值
而比較兩個(gè)引用數(shù)據(jù)類(lèi)型時(shí),它是比較對(duì)象的內(nèi)存地址
如果兩個(gè)對(duì)象是一模一樣的,但是地址不同,它也會(huì)返回false
var c=10; var d=10; console.log(c==d); //true var obj3=new Object; var obj4=new Object; obj3.name='tom'; obj4.name='tom'; console.log(obj3==obj4); //false
10.對(duì)象的序列化(把對(duì)象變?yōu)樽址?
1)常規(guī)轉(zhuǎn)換
obj.tostring()
2)轉(zhuǎn)化為json字符串
JSON.stringify(obj)
3)查詢(xún)字符串
var qs= require('querystring'); //引入node.js模塊
qs.stringify(obj) =>name=tom&age=12
11.增強(qiáng)for循環(huán)(for in)
遍歷對(duì)象
語(yǔ)法:
for(var 變量 in 對(duì)象){ }
for...in語(yǔ)句 對(duì)象中有幾個(gè)屬性,循環(huán)體就會(huì)執(zhí)行幾次每次執(zhí)行時(shí),會(huì)將對(duì)象中的一個(gè)屬性名賦值給變量
var obj={ name:'孫悟空', age:18, gender:'男', address:'花果山' } for(var n in obj){ console.log('屬性名:'+n); console.log('屬性值:'+obj[n]); }
到此這篇關(guān)于Java中的Script對(duì)象(詳細(xì))的文章就介紹到這了,更多相關(guān)JavaScript對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JavaScript數(shù)據(jù)可視化:ECharts制作地圖
- 超詳細(xì)的JavaScript基本語(yǔ)法規(guī)則
- JavaScript中類(lèi)型的強(qiáng)制轉(zhuǎn)換與隱式轉(zhuǎn)換詳解
- JavaScript實(shí)現(xiàn)通過(guò)滑塊改變網(wǎng)頁(yè)顏色
- JavaScript es6中var、let以及const三者區(qū)別案例詳解
- JavaScript 中this指向問(wèn)題案例詳解
- JavaScript函數(shù)之call、apply以及bind方法案例詳解
- 詳解JavaScript中Arguments對(duì)象用途
- JavaScript CollectGarbage函數(shù)案例詳解
- JavaScript中BOM和DOM詳解
- JavaScript setTimeout與setTimeinterval使用案例詳解
- JavaScript定時(shí)器實(shí)現(xiàn)限時(shí)秒殺功能
- JavaScript實(shí)現(xiàn)限時(shí)秒殺功能
相關(guān)文章
arrify 轉(zhuǎn)數(shù)組實(shí)現(xiàn)示例源碼解析
這篇文章主要為大家介紹了arrify 轉(zhuǎn)數(shù)組實(shí)現(xiàn)示例源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12微信小程序 動(dòng)畫(huà)的簡(jiǎn)單實(shí)例
這篇文章主要介紹了微信小程序 動(dòng)畫(huà)的簡(jiǎn)單實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-10-10JS屬性scrollTop?clientHeight?scrollHeight理解學(xué)習(xí)
這篇文章主要為大家介紹了JS屬性scrollTop?clientHeight?scrollHeight理解學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07JavaScript實(shí)現(xiàn)一個(gè)Promise隊(duì)列小工具
這篇文章主要介紹了JavaScript實(shí)現(xiàn)一個(gè)Promise隊(duì)列小工具,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08ChatGPT前端編程秀之別拿編程語(yǔ)言不當(dāng)語(yǔ)言
這篇文章主要為大家介紹了ChatGPT前端編程秀之教你別拿編程語(yǔ)言不當(dāng)語(yǔ)言,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Web Worker線(xiàn)程解決方案electron踩坑記錄
這篇文章主要為大家介紹了Web Worker線(xiàn)程解決方案electron踩坑記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11微信小程序 Button 組件詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了微信小程序 Button 組件詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-01-01