一、潜规则: 按照字符串内存储的内容对字符串进行了一系列的划分
=> 普通字符串: 'jhsagdvhjkasgvfdhj'
=> 数字字符串: '798798654651323265987'
=> html 格式字符串: '
'=> 查询字符串: 'key=value&key2=value2'
json对象:描述数据的一种格式,将若干繁杂的属性封装为一个整体
可以直接通过json对象,操作各个属性
1.定义,由{}括起来的键值对,每两个键值对用逗号分开
key:value
注意事项:所有的key请用双引号括起来
2.属性的访问 常用
a.通过点运算符访问
对象名.属性名
b.下标法
对象名[key]
c.为json对象添加新的自定义属性
对象名.新属性名 = 属性值
d.json对象的遍历
每次循环式=时变量代表索引
for(var 变量 in json对象){
循环体
}
e.在一个成员方法中使用其他的成员,需要添加前缀this1.
var stu = {
- "name": "老王",
- "age": 88,
- "score": 100,
- "eat": function() {
- console.log("eat");
- },
- "showValue": function() {
- console.log(this.name, this.age, this.socre);
- this.eat();
- }
- }
- stu.showValue();
=> json 格式字符串:
字符串内写的是对象: '{ "name": "Jack", "age": 18 }'
字符串内写的是数组: '[{ "name": "Jack", "age": 18 }, { "name": "Jack", "age": 18 }]'
要求:
-
json 格式字符串内, key 的位置必须使用 双引号包裹
-
json 格式字符串内, 必须是 对象或者数组(数组内是一个一个的对象) 的形式
-
json 格式字符串内, value 的位置, 如果是 纯数字或者布尔, 不需要包裹
-
json 格式字符串内, 不能包含函数数据类型
-
json 格式字符串内, 不允许最后一条数据以后还有一个 逗号(,)
-
json 格式字符串内, 引号以外的内容, 只有 冒号, 逗号, 大括号, 中括号
-> 书写的就是 js 内的对象数据或者数组数据
-> js 给我们提供了 json 格式转换的方法
-> json 格式是一种独立格式, 我们可以直接书写 .json 格式文件
// 1. js 的数据类型转换成 json 格式字符串
// 语法: JSON.stringify(要转换的js格式数据)
// 返回值: json 格式字符串
// var obj = { name: 'Jack', age: 18, gender: '男' }
// var res = JSON.stringify(obj)
// console.log(res)
// 2. json 格式字符串转换成 js 的数据类型
// 语法: JSON.parse(json格式字符串)
// 注意: 传递的参数必须是一个合法的 json 格式字符串, 否则直接报错
// var str = '{"name":"Jack","age":18,"gender":"男"}'
// var res = JSON.parse(str)
// console.log(res)
// Uncaught SyntaxError: Unexpected token a in JSON at position 0
// 只要看到这个错误, 说明 JSON.parse(xxx) 这个方法执行了
// xxx 不是一个 json 格式字符串内
// 你需要找到 xxx 是哪来的
// 3. 利用 json 格式实现深拷贝
var obj = {
name: 'Jack',
age: 18,
gender: '男',
info: {
height: 180,
weight: 180,
address: {
city: '北京'
}
},
hobby: [ '吃饭', '睡觉', [ '篮球', '足球' ] ]
}
// 3-1. 把 obj 直接转换成 json 格式
var r1 = JSON.stringify(obj)
console.log(r1)
// 3-2. 把转换好的 json 格式字符串在转换会对象
var res = JSON.parse(r1)
console.log(res)
console.log(obj)
obj.info.address.city = '上海'
console.log(res)
console.log(obj)
// var res = JSON.parse(JSON.stringify(obj)) // 简易实现深拷贝
二、严格模式
严格模式:你必须使用定义过的变量
被"use strict"修饰的作用域,所有变量必须定义才能使用
去掉了变量提升的作用
- "use strict";
- a = 123;
- console.log(a);//未被定义时的打印
- var a; //定义
为什么使用严格模式:
①消除Javascript语法的一-些不合理、不严谨之处, 减少一些怪异行为;
②消除代码运行的一些不安全之处,保证代码运行的安全;
③提高编译器效率,增加运行速度;
④为未来新版本的Javascript做好铺垫。
⑤浏览器支持: IE10+ fijosnjo为什么使用严格模式:
①消除Javascript语法的一-些不合理、不严谨之处, 减少一些怪异行为;
②消除代码运行的一些不安全之处,保证代码运行的安全;
③提高编译器效率,增加运行速度;
④为未来新版本的Javascript做好铺垫。
⑤浏览器支持: IE10+ firefox 4+ Safari 5.1+ Chrome