zoukankan      html  css  js  c++  java
  • 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 = /^1d{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

  • 相关阅读:
    mini2440烧写nor flash
    mini2440系统引导(五)串口UART
    mini2440系统引导(四)存储控制器
    mini2440系统引导(三)当前状态寄存器CPSR
    mini2440系统引导(二)中断寄存器
    mini2440系统引导(一)看门狗
    filebeat版本问题导致logstash无法处理接收到的日志
    kernel: possible SYN flooding on port 80. Sending cookies
    grok正则
    【转载】kafka 基础知识
  • 原文地址:https://www.cnblogs.com/0828-li/p/5693181.html
Copyright © 2011-2022 走看看