javascript--15-对象和json

什么是对象

  1. js的一种数据类型

写法

  • {}
  • new Object
  • Object.create({})

格式

  1. {键:值}多个 键值用逗号分隔 键表示属性名 值表示属性值
  2. 值:必须储存数据 可以是任意数据类型 和数组类似 变量会被解析
  3. 键:键可以加引号,可以不加引号 可以写字符和数值类型 其他类型不能书写
  4. 如果键名和变量名一致 那么可以直接写变量进去 变量名表示键的值 var name ="lisi"; var obj = {name} 变量值表示
<script>
  var a = {
      name:"lisi",
      leg:2,
      wings:2,
      sing:function () {
          alert(1);
      }
  }
  console.log(a);
</script>
var a = "name";
  var obj = {
      a:"lisi",//a不会被解析为李四  因为会被认为是字符串
      leg:2,
      wings:2,
      sing:function () {
          alert(1);
      }
  }
var a = "name";
  var obj = {
      a:a,//右侧a会被解析为李四  
      leg:2,
      wings:2,
      sing:function () {
          alert(1);
      }
  }

查找属性的值

  1. 对象取值 obj["字符串"]可以代替obj.字符串 使用中括号语法或者点语法 类数组是对象 有length属性和数值的键
<script>
var stu={
   name:"lisi",
   age:19,
   height:180,
}
console.log(stu.name);
console.log(stu["name"]);
</script>
<script>
 var stu={
     name:"lisi",
     age:19,
     height:180,
     1:"haha",
 }
  console.log(stu.name);
 console.log(stu["name"]);
 console.log(stu["1"]);//当键是数值时,只能用[]取值  变量定义规则是不能数字开头
</script>

类数组和数组一样都有length属性 但是类数组是个对象 并不是数组 数组自带length属性 类数组可以通过对象中的键值对达到数组的效果 数组没有键值对关系 里面存的是值

var stu={
     0:"lisi",
     1:"name",
     2:20,
     length:3,
 }
  console.log(stu);

当键是数值 取值是 console.log(stu[0]) 这也是为什么类数组可以for循环[]取值

  1. 修改属性的值 通过点语法直接赋值修改
<script>
 var stu={
     name:"lisi",
 }
 stu.name ="wangwu";
  console.log(stu.name);
</script>
  1. 添加值 通过点语法直接赋值添加
<script>
 var stu={
     name:"lisi",
 }
 stu.name ="wangwu";
 stu.height=180;
  console.log(stu);
</script>
  1. 删除属性 delete obj.x
var stu={
     name:"lisi",
     weight:20,
 }
 delete stu.weight;
  console.log(stu);
  1. 判断对象中是否存在某个属性 "xx" in obj 存在为true
var stu={
     name:"lisi",
     weight:20,
 }
stu.xx="";
 if ("xx" in stu){//根据键判断 跟值没关系
     alert("存在");
 }else{
     alert("不存在");
 }

结果是存在

对比数组的取值 赋值 删值

  1. 数组取值 arr[索引]
  2. 数组的赋值 arr[索引] = “新值”
  3. 删除数组的元素 delete arr[索引]

遍历对象

<script>
  var oArr ={
      0:"你好",
      1:"我好",
      2:"她好",
      length:"3",
  }
  for (var i=0;i<oArr.length;i++){
      console.log(oArr[i]);
  }
</script>

但是

<script>
  var oArr ={
      name:"你好",
      age:"我好",
      height:"她好",
      length:"3",
  }
  for (var i=0;i<oArr.length;i++){
      console.log(oArr[i]);
  }
</script>

这样是取不出来的 需要新的属性

for in 循环 性能很低

<script>
  var oArr ={
      name:"你好",
      age:"我好",
      height:"她好",
      length:"3",
  }
  for (var key in oArr){//通过key取键
      console.log(oArr[key]);//key是变量 并不是oArr的属性  不能写oArr.kry
  }
</script>
  1. for in的缺点 性能低 因为她还读了原型

jason

  1. 全称 javascript object notation js对象标记 本质是字符串
<script>
  var json = `{
      "name":"lisi",
      "age":19,
  }`
</script>

键必须要用双引号包裹 值的类型可以是数组 对象 bool 字符串 数值

  1. 作用 :如果设计数据交换 不同语言之间怎么交换数据? 不同语言的对象可能不同 但是字符串可以沟通 +json这个字符串 是特殊格式的字符串 可以表示数据的键和值的关系 然后不同的语言再转化 自己能读懂的数据即可

  2. json包括 对象 数组 字符串 数值 true false null

<script>
  var json =`{"name":"lisi",}`;
  var json2 = `["lisi","wangwu"]`;
  var json3 = "123";
  var json4 = "年后";
</script>
  1. 把js的数据转换成json JSON.stringify() 序列化 :遇到函数json自动舍去 对象 数组 字符串 数值 true false null
<script>
    var oArr ={
        name:"你好",
        age:"我好",
        height:"她好",
        length:"3",
    }
    console.log(JSON.stringify(oArr));
</script>

5.将json转化成对象 反序列化 JSON.parse(json)

<script>
    var json =`{"name":"lisi"}`
  console.log(JSON.parse(json));
</script>

json2的兼容

  1. JSON.parse()/stringify()不兼容 ie7及以下
  2. 解决方法 :使用 json2.js
  • 网上找json2.js源码 并下载
  • 只需要json2.js 在代码中引入script
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值