JSON數據和對象


在js中像數字類型、字符串類型、布爾類型這些都不能再被拆分,屬於基本類型。與之相對有一種復雜類型:對象類型,它是本身由多個其他類型組合而成的。

創建對象有兩種方法,一、new Object()創建一個新對象;二、通過字面量創建法,var obj={}。在對象中的數據,總是以鍵值對的形式出現,如:name:"孫悟空",當有多個鍵值對的時候,在每個的結尾有“,”區分。同時,對象的屬性可以是對象也可以是函數。

當我們數據寫入一個對象中,我們需要對這個數據進行傳輸或者存儲到計算機的時候怎么辦呢?計算機在存儲、處理、傳輸數據時,必須以二進制形式進行。那么當要對一個對象進行傳輸或者存儲的時候,我們就需要先把對象轉換為字符串等可以傳輸的數據,而把對象轉為字符串的過程就叫對象序列化。

對象序列化主要有兩種方式,第一種叫做XML(extend markup language)數據:

<object>
   <name>哪吒</name>
   <age>28</age>
   <brother>
   <name>孫悟空</name>
    <age>99</age>
   </brother>
</object>

第二種方式是 JSON(JavaScript Object Notation)數據
  {name:"哪吒",age:28,brother:{name:"孫悟空",age:99}}

JSON數據的格式和 JavaScript字面量創建對象的格式基本相同,唯一的區別是JSON數據中不能有函數,JSON.stringify函數,可以把一個對象轉換為JSON字符串,這個函數

會自動去除對象中的函數。

那么當我們把對象進行序列化方便我們進行了數據的傳輸,但是當我們需要對數據進行處理的時候我們就要對數據進行解析,當客戶端從服務器請求到數據時,都是序列化之后的對象,所以在處理數據之前,先要把序列化之后的字符串再轉為對象,這個過程叫做數據解析,通過JSON.parse()函數對JSON數據進行解析。

特別地,當我們在客戶端的數據需要與服務器進行交互傳輸的時候,我們接收到的服務器的數據都是通過JSON序列化之后的數據,在客戶端接收到數據后要使用這些數據,我們就要把這些JSON數據進行解析,一般都不用第一種方式對數據進行序列化。

在對象中包括:布爾對象、字符串對象、數字對象、數學對象等

布爾對象:是一個基本類型,只有true和false,只能通過new創建,不能用字面量創建

如果Boolean構造函數的參數不是一個布爾值,則該參數會被轉換成一
個布爾值.如果參數是 0, -0, null, false, NaN, undefined,
或者空字符串 (""),生成的Boolean對象的值為false. 其他任何值,
包括任何對象或者字符串"false", 都會創建一個值為true的。toString()將對象轉為字符串類型。

字符串對象:對字符串對象的創建一般用字面量創建的方法

/*--------------------------------*/
//.indexOf從字符串對象中返回首個被發現的給定字符串的索引值,
//如果沒有找到則返回-1
var index = "abcdefgabcdefg".indexOf("b");
console.log(index);
//.lastIndexOf從字符串中找到最后一個被發現的給定字符串的索引值。
/*--------------------------------*/
//.match判斷一個字符串是否滿足一個正則表示式
var gex = /^1\d{10}$/;
if("1361380g129".match(gex)){
console.log("是手機號");
}else{
console.log("不是手機號");
}
/*--------------------------------*/
//.slice字符串截取,
var str8 = "0123456789";
console.log(str8.slice(2,str8.length));
/*--------------------------------*/
//.split把字符串按照某個字符進行分割,返回值是一個數組
var str9 = "iPhone,SAMSUNG,NOKIA";
var phones = str9.split(",");
console.log(phones);
/*--------------------------------*/
//.substr 截取字符串,從第幾個位置開始,往后截取多少個字符
console.log(str8.substr(3,5));
/*--------------------------------*/
//.substring從某個索引位置(含)截取到某個索引位置(不含)
console.log(str8.substring(3,5));
/*--------------------------------*/
//.toUpperCase將字符串中的所有英文字母轉為大寫
//.toLowerCase...........轉為小寫
console.log("aBc".toUpperCase());
console.log("AbC".toLowerCase());
/*--------------------------------*/
//.anchor將字符串用一個a標簽括起來
var str10 = "sunhuayu";
console.log(str10.anchor("a"));
/*--------------------------------*/
//.replace將字符串中的某些字符替換為新的字符,
//第三個參數,g表示全部替換,i表示忽略大小寫
var str11 = "abc123abc123";
console.log(str11.replace("a","z","g"));

數學對象:

var n1 = -3.5;
// Math.abs 取絕對值
console.log(Math.abs(n1));

//Math.sin 正弦函數,函數的參數必須是弧度制
//角度轉弧度 deg/180*Math.PI
console.log(Math.sin(Math.PI/6));
// Math.cos();

//Math.cbrt 立方根
//Math,sqrt 平方根
console.log(Math.cbrt(27));

//Math.ceil向上取整
//Math.floor向下取整
console.log(Math.ceil(-1.2));

//Math.pow 冪運算。幾的幾次方
console.log(Math.pow(9,0.5));

//Math.random() 生成一個大於等於0且小於1的隨機數
Math.floor(Math.random()*11)+10

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM