JSON

来源:互联网 发布:数组转化为json字符串 编辑:程序博客网 时间:2024/06/06 08:45

JSON(JavaScript对象表示法)

  • 概念:是一种轻量级数据(交换)格式
  • 特点:易于开发者阅读和编写;易于计算机解析和生成,主要用来存储数据的
  • JSON文件
    • 扩展名为 .json
    • JSON语法结构:
      • 对象格式 - 键/值对
        ‘{
        “key” : “value”,
        “key” : “value”,

        }’ (主要用来将属性值进行存储,方法就不能存储)
  • 数组结构
    ‘[“value1”,”value2”, “value3”,”value4”…]’
  • 嵌套问题 – 语法不规定多少层,在开发中建议最多3层。
  • JSON对象和JSON字符串
    • JSON对象:
      JSON格式的数据在某个指定语言中所支持的方式或类型
      对象类型
      数组类型
    • JSON字符串:
      格式符合JSON格式要求的字符串,作用:为了与服务器和其他终端进行数据的交换。
      在JS中JSON字符串是String类型
      JSON格式的内容必须使用 双引号
  • JSON对象和JSON字符串之间的转换
    • JavaScript中提供了JSON
    • JSON.stringify() – 将JSON对象转换为JSON字符串
    • JSON.parse() – JSON字符串转换为JSON对象
    • 兼容问题
      *在IE 8 版本之前不支持JavaScript 中的JSON
    • 可以使用第三方的兼容解决方案 – json2.js
  • eavl()函数将字符串强行转换为JavaScript 代码,它的参数严格要求是string类型,而不是String类型。
    {}在eavl函数中被认为是 语句块,而不是 对象,通常的解决方案是在 {}外包裹一个小括号。
    构造函数(constructor)
  • 对象与函数的关系:
    • 概念:函数本身也是一个对象 Function instanceof Object //true
      Object本身也是一个函数 Object instanceof Function //true
      (仅仅指的就是构造函数Object)
  • 扩展创建函数的方式:
    var 函数名 = new Function(‘参数’ ,‘函数体’)
  • 扩展创建对象的方式:
    * 创建构造函数: - 类似于群体(类)
    function 构造函数名(形参){
    this.属性名 = 属性值;
    this.方法名 = function(){
    方法体
    }
    }
    根据构造函数创建对象 – 类似于群体中的个体
    用构造函数创建的对象: var 对象名 = new 构造函数名();
    this – 在构造函数中,用于指代创建的对象

    - 构造函数就是专门用来创建对象的函数- 构造函数就是一个普通的函数,声明方式和普通函数没有区别,但是我们一般习惯构造函数的首字母大写- 一个函数如果直接调用,那么它就是一个普通函数,如果使用new关键字来调用,它就是一个构造函数
    • 一个构造函数我们也称为一个类(class),通过一个构造函数创建的对象,我们称这个对象是这个类的实例,通过同一个构造函数创建的对象,我们称为同一类对象
      • 构造函数的执行流程:
        1.创建一个新的对象
        2.将新的对象设置为函数中的this(可以通过this向新的对象中添加属性)
        3.按顺序执行函数中的代码
        4.将新建的对象作为返回值返回
      • 当函数以构造函数的形式调用时,this是新建的那个对象
        –instanceof
      • 通过该运算符可以检查一个对象是否是一个构造函数的实例
        • 语法:
          对象 instanceof 构造函数
          • 如果是构造函数的实例,则返回true,否则返回false
            Object所有对象的祖先,所以所有的对象和Object做instanceof都会返回true
  • 例题:
    定义一个Person类,要求类中具有三个属性,并在类的原型中添加一个 toString()方法,使其可以输出对象的信息。
    function Person(name,age,gender){
    this.name = name;
    this.age = age;
    this.gender = gender;
    }
    //添加toString()方法
    Person.prototype.toString = function(){
    console.log(“….”);
    return “Person[…..]”
    }
    函数对象的方法
    call()和apply()- 实现构造函数之间的属性传递
    Function.call(this,形参)
    • 作用:将调用call()方法的那个构造函数的所有属性和方法继承到当前构造函数中。
    • 参数:this – 当前调用的那个构造函数所创建的对象
    • 通过调用构造函数.call()属性,将它的属性和方法,继承到当前的构造函数中。
  • 通常,将若干个构造函数中拥有相同属性或方法,统一定义在一个构造函数中,通过调用call()方法继承下来。然后在分别创建其他的属性。
    • 特点:代码量降低,性能提高。
      Function.apply(this ,形参) 有没有传递参数,this都必须写
  • 两者实现的效果是相同的。
  • 不同的是call直接传递实参,而apply需要将实参封装到数组中传递
    -call是将实参直接传递
    fun.call(this , 123 , 456);
    -apply需要将实参封装到一个数组中传递
    fun.apply(this , [123 , 456]);
    - this到底是谁?
    - 根据函数调用的形式不同,this的值也不同
    1.以函数形式调用,this是window
    2.以方法形式调用,this是调用方法的对象
    3.以构造函数形式调用,this是新建的对象
    4.使用call和apply调用,this是call和apply第一个参数
原创粉丝点击