JS高级
JSON
json是一个特殊格式的字符串,可以被任意语言所识别,并可以转换为任意语言中的对象,用于在开发中,不同语言实现一个数据的交互
json(JavaScript Object Notation)-JS对象表示法
var obj = '{"name":"熊阳阳","age":24}'
var arr = '[1,2,3,"hello"]'
- JSON中,属性名必须加双引号
- JSON分类
2.1 JSON对象{ }
2.2 JSON数组[ ] - JSON中允许的值(value)
3.1 字符串
3.2 数值
3.3 布尔值
3.4 null
3.5 对象(普通对象,不能是函数对象)
3.6 数组
JSON的方法
- JSON.parse()
将JSON字符串转换为JS对象,并返回 - JSON.stringify()
将js对象转为JSON字符串(属性需要加双引号,对象最外层需要加单引号)
判断数据类型
-
typeof(返回数据类型的字符串表达)
-
instanceof
-
===
1.可以用===去判断undefined和null,因为这两个数据类型只有一个值
2. typeof判断出的数据类型都是小写啦 且是字符串的返回值
3. b1 instanceof Object,要注意Object(所有的数据类型instanceof都是大写)是大写
undefined和null的区别?
- undefined代表定义了未赋值
- null代表定义了,并赋值null
什么时候给变量赋值null?
- 一个值,以后要被赋值为对象,但是现在还不知道具体赋值多少,就先赋值为null(更严谨一些)
- b=[1,2,3,3]; b=null; 释放对象b (被垃圾回收器回收)
变量类型和数据类型的区别
数据的类型(基本类型和对象类型)
变量的类型(变量内存值的类型)
- 基本类型:保存的是基本类型的数据
- 引用类型:保存的是地址值
变量,内存,数据
例一:
- a 又重新开辟了一块内存
例二
2. 注意这里是等号,重新开辟了新的内存
例三
和例二区分一下
例四
步骤fn(a)实际上是将a的值,3传递进去了
js传递参数
对象
什么时候不能用p.name的方式获取属性值?
函数
回调函数
在某个时刻或者某个条件下执行了
IIFE
例子
函数中的this
要不要加分号
原型与原型链
- 函数的prototype属性
- 每个函数都有一个prototype属性,默认指向一个Object空对象(即称为:原型对象)
- 原型对象中有一个属性constructor,它指向函数对象
- 给原型对象添加属性,方法
- 函数的所有实例对象自动拥有原型中的属性,方法
测试一
测试二
备注
- 函数里面的局部变量(存的基本数据),执行完函数后立马自动释放
如果存的是对象类型:
- js函数传入的是值,可能是变量值,也可能是址
- Object.prototype.proto = null
复习