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