javascript學(xué)習(xí)筆記(六)數(shù)據(jù)類型和JSON格式
什么是JSON
JSON:JavaScript 對(duì)象表示法(JavaScript Object Notation)。
JSON的形式是用大括號(hào)“{}”包圍起來的項(xiàng)目列表,每一個(gè)項(xiàng)目間用逗號(hào)(,)分隔,而項(xiàng)目就是用冒號(hào)(:)分隔的屬性名和屬性值。這是典型的字典表示形式,也再次表明javascript里的對(duì)象就是字典結(jié)構(gòu)。不管多么復(fù)雜的對(duì)象,都可以用一句JSON代碼來創(chuàng)建并賦值。
JSON 結(jié)構(gòu)
JSON有兩種結(jié)構(gòu)
json簡單說就是javascript中的對(duì)象和數(shù)組,所以這兩種結(jié)構(gòu)就是對(duì)象和數(shù)組兩種結(jié)構(gòu),通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)
1、對(duì)象:對(duì)象在js中表示為“{}”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 {key:value,key:value,...}的鍵值對(duì)的結(jié)構(gòu),在面向?qū)ο蟮恼Z言中,key為對(duì)象的屬性,value為對(duì)應(yīng)的屬性值,所以很容易理解,取值方法為 對(duì)象.key 獲取屬性值,這個(gè)屬性值的類型可以是 數(shù)字、字符串、數(shù)組、對(duì)象幾種。
2、數(shù)組:數(shù)組在js中是中括號(hào)“[]”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數(shù)字、字符串、數(shù)組、對(duì)象幾種。
經(jīng)過對(duì)象、數(shù)組2種結(jié)構(gòu)就可以組合成復(fù)雜的數(shù)據(jù)結(jié)構(gòu)了。
JSON 語法規(guī)則
JSON 語法是 JavaScript 對(duì)象表示法語法的子集。
數(shù)據(jù)在名稱/值對(duì)中
數(shù)據(jù)由逗號(hào)分隔
花括號(hào)保存對(duì)象
方括號(hào)保存數(shù)組
JSON 值可以是:
數(shù)字(整數(shù)或浮點(diǎn)數(shù))
字符串(在雙引號(hào)中)
邏輯值(true 或 false)
數(shù)組(在方括號(hào)中)
對(duì)象(在花括號(hào)中)
null
1) 并列的數(shù)據(jù)之間用逗號(hào)(", ")分隔。
2) 映射用冒號(hào)(": ")表示。
3) 并列數(shù)據(jù)的集合(數(shù)組)用方括號(hào)("[]")表示。
4) 映射的集合(對(duì)象)用大括號(hào)("{}")表示。
JSON例子
創(chuàng)建沒有任何屬性的對(duì)象:
var obj = {};
創(chuàng)建一個(gè)對(duì)象并設(shè)置屬性和初始值:
var author = {name : "trigkit4",age : 21 , sex : "male"};
創(chuàng)建一個(gè)對(duì)象并設(shè)置屬性和方法:
var hello ={content:"how are you?" , say :function(){alert(this.content)} };
創(chuàng)建一個(gè)嵌套其他對(duì)象和對(duì)象數(shù)組等:
var company = {name:"Apple",
product:"iPPhone",
chairman:{name:"Tim Cook",age:54},
employees:[{name:"Jony Ive",age:47},{name:"Lili",age:29}],
};
對(duì)象是一套無序的名/值對(duì),一個(gè)對(duì)象以左邊分支開始,以右邊分支結(jié)束
一個(gè)值可以是用雙引號(hào)括起來的字符串,或者是一個(gè)數(shù)值,一個(gè)true or false ,一個(gè)數(shù)組或者一個(gè)對(duì)象
數(shù)據(jù)類型:
從結(jié)構(gòu)上看,所有的數(shù)據(jù)(data)最終都可以分解成三種類型:
第一種類型是標(biāo)量(scalar),也就是一個(gè)單獨(dú)的字符串(string)或數(shù)字(numbers),比如"北京"這個(gè)單獨(dú)的詞。
第二種類型是序列(sequence),也就是若干個(gè)相關(guān)的數(shù)據(jù)按照一定順序并列在一起,又叫做數(shù)組(array)或列表(List),比如"北京,上海"。
第三種類型是映射(mapping),也就是一個(gè)名/值對(duì)(Name/value),即數(shù)據(jù)有一個(gè)名稱,還有一個(gè)與之相對(duì)應(yīng)的值,這又稱作散列(hash)或字典(dictionary),比如"首都:北京"。
在編程語言中,只要有了數(shù)組(array)和對(duì)象(object)就能夠儲(chǔ)存一切數(shù)據(jù)了。
數(shù)組和對(duì)象的另一個(gè)區(qū)別是,數(shù)組的數(shù)據(jù)沒有"名稱"(name),對(duì)象的數(shù)據(jù)有"名稱"(name)。
JavaScript中有5種簡單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):Undefined、Null、Boolean、Number和String。還有1種復(fù)雜數(shù)據(jù)類型——Object,Object本質(zhì)上是由一組無序的名值對(duì)組成的。
對(duì)一個(gè)值使用typeof操作符可能返回下列某個(gè)字符串:
● "undefined"——如果這個(gè)值未定義;
● "boolean"——如果這個(gè)值是布爾值;
● "string"——如果這個(gè)值是字符串;
● "number"——如果這個(gè)值是數(shù)值;
● "object"——如果這個(gè)值是對(duì)象或null;
● "function"——如果這個(gè)值是函數(shù);
Undefined類型:
`Undefined`類型只有一個(gè)值,在使用var聲明變量但未對(duì)其加以初始化時(shí),
這個(gè)變量的值就是undefined
Null類型
Null類型是第二個(gè)只有一個(gè)值的數(shù)據(jù)類型,這個(gè)特殊的值是null。從邏輯角度來看,null值表示一個(gè)空對(duì)象指針,而這也正是使用typeof操作符檢測null時(shí)會(huì)返回"object"的原因,例如:
var car = null;
alert(typeof car); // "object"
Number類型
這種類型用來表示整數(shù)和浮點(diǎn)數(shù)值,還有一種特殊的數(shù)值,即NaN(非數(shù)值 Not a Number)。這個(gè)數(shù)值用于表示一個(gè)本來要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會(huì)拋出錯(cuò)誤了)。
String類型
String類型用于表示由零或多個(gè)16位Unicode字符組成的字符序列,即字符串。字符串可以由單引號(hào)(')或雙引號(hào)(")表示。
數(shù)值、布爾值、對(duì)象和字符串值都有toString()方法。但null和undefined值沒有這個(gè)方法。
多數(shù)情況下,調(diào)用toString()方法不必傳遞參數(shù)。但是,在調(diào)用數(shù)值的toString()方法時(shí),可以傳遞一個(gè)參數(shù):輸出數(shù)值的基數(shù)。
var num = 10;
alert(num.toString()); //"10"
alert(num.toString(2)); //"1010"
alert(num.toString(8)); //"12"
alert(num.toString(10)); //"10"
alert(num.toString(16)); //"a"
在不知道要轉(zhuǎn)換的值是不是null或undefined的情況下,還可以使用轉(zhuǎn)型函數(shù)String(),這個(gè)函數(shù)能夠?qū)⑷魏晤愋偷闹缔D(zhuǎn)換為字符串。String()函數(shù)遵循下列轉(zhuǎn)換規(guī)則:
● 如果值有toString()方法,則調(diào)用該方法(沒有參數(shù))并返回相應(yīng)的結(jié)果
● 如果值是null,則返回"null"
● 如果值是undefined,則返回"undefined"
Object類型
對(duì)象其實(shí)就是一組數(shù)據(jù)和功能的集合。對(duì)象可以通過執(zhí)行new操作符后跟要?jiǎng)?chuàng)建的對(duì)象類型的名稱來創(chuàng)建。而創(chuàng)建Object類型的實(shí)例并為其添加屬性和(或)方法,就可以創(chuàng)建自定義對(duì)象。
var o = new Object();
typeof 操作符
<script type="text/javascript">
var s = "Nicholas";
var b =true;
var c = 21;
var u;
var n = null;
var o = {};
var obj = new Object;//最好寫出new object()形式
alert(typeof s);//string
alert(typeof b);//boolean
alert(typeof c);//number
alert(typeof u);//undefined
alert(typeof n);//object
alert(typeof o);//object
alert(typeof obj);//object
</script>
Json在線解析
Json在線解析:http://json.tongxiehui.net/
- js 判斷文件類型并控制表單提交示例代碼
- 客戶端js判斷文件類型和文件大小即限制上傳大小
- js 正則表達(dá)式 驗(yàn)證 a/b/c 格式的類型數(shù)據(jù)
- js判斷undefined類型示例代碼
- js判斷游覽器類型及版本號(hào)的代碼
- js判斷上傳文件類型判斷FileUpload文件類型代碼
- JS完整獲取IE瀏覽器信息包括類型、版本、語言等等
- js判斷當(dāng)前瀏覽器類型,判斷IE瀏覽器方法
- js用typeof方法判斷undefined類型
- js數(shù)值計(jì)算時(shí)使用parseInt進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換(jquery)
- node.js解決獲取圖片真實(shí)文件類型的問題
- 通過JS判斷聯(lián)網(wǎng)類型和連接狀態(tài)的實(shí)現(xiàn)代碼
- js表格排序?qū)嵗治觯ㄖС謎nt,float,date,string四種數(shù)據(jù)類型)
- js/jquery判斷瀏覽器類型的方法小結(jié)
- js控制文本框輸入的字符類型方法匯總
- js判斷瀏覽器類型及設(shè)備(移動(dòng)頁面開發(fā))
- JS腳本根據(jù)手機(jī)瀏覽器類型跳轉(zhuǎn)WAP手機(jī)網(wǎng)站(兩種方式)
- JavaScript判斷FileUpload控件上傳文件類型
相關(guān)文章
javascript學(xué)習(xí)指南之回調(diào)問題
回調(diào)函數(shù)被認(rèn)為是一種高級(jí)函數(shù),一種被作為參數(shù)傳遞給另一個(gè)函數(shù)(在這稱作"otherFunction")的高級(jí)函數(shù),回調(diào)函數(shù)會(huì)在otherFunction內(nèi)被調(diào)用(或執(zhí)行)?;卣{(diào)函數(shù)的本質(zhì)是一種模式(一種解決常見問題的模式),因此回調(diào)函數(shù)也被稱為回調(diào)模式。2016-04-04淺談JavaScript數(shù)據(jù)類型及轉(zhuǎn)換
本文向大家簡單介紹了javascript的數(shù)據(jù)類型以及他們直接的轉(zhuǎn)換方法,雖然沒有太多示例,但是也是個(gè)人的一些經(jīng)驗(yàn)總結(jié),這里推薦給大家。2015-02-02Uglifyjs(JS代碼優(yōu)化工具)入門 安裝使用
Uglify JS 是一個(gè)服務(wù)端node.js的壓縮程序。需要的朋友可以測試下2012-03-03JavaScript中用于生成隨機(jī)數(shù)的Math.random()方法
這篇文章主要介紹了JavaScript中用于生成隨機(jī)數(shù)的Math.random()方法,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06javaScript中兩個(gè)等于號(hào)和三個(gè)等于號(hào)之間的區(qū)別介紹
這篇文章主要介紹了javaScript中兩個(gè)等于號(hào)和三個(gè)等于號(hào)之間的區(qū)別,還不知道的朋友可以學(xué)習(xí)下2014-06-06