js的数据类型
number,string,null,undefined,boolean,object,array
js的基本数据类型(5种)
nuber,null,undefined,boolean,string
js的引用数据类型()
object,array,function,data
定义:
基本数据类型:指的是简单的数据段,引用数据类型指的是有多个值构成的对象
当我们吧变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值,还是引用类型值。
js 的引用数据类型是保存在堆内存中的对象。
与其他语言的不同是,你不可以访问堆内存空间中的位置和操作堆内存空间,只能操作对象在
栈内存中的引用地址。所以,引用类型数据在站内从中保存的实际上是对象在堆内存中的引用地址,
通过这个引用地址可以快速查找到保存中堆内存中的对象
let obj1 = new Object();
let obj2 = obj1;
obj2.name = "11111"
console.log(obj1.name)//11111
说明这两个引用数据类型指向同一个堆内存对象,obj1赋值给obj2,实际上这个堆内存对象在栈内存
的引用地址复制了一份给obj2,但是实际上他们共同指向同一个堆内存对象,实际上改变的是堆内存对象。
js中对象和函数的关系
首先,什么是对象?
js中所有事物都是对象,对象是拥有属性和方法的数据,由此可见基本数据类型不是对象,剩下的
引用数据类型都是对象,(注意null也是引用数据类型),也就有人说对象是若干属性的集合。
1.0 函数是一种对象
function test(){} console.log(test instanceof Object);//true,
所以很明显函数是一种对象,但你不能说是对象的一种,这不存在包含关系
2.0 对象都是通过函数创建的
demo
function test(){} let a = new test() console.log(test2 instance Object);//true
这个例子说明对象可以被函数创建,那为什么要说对象都是通过函数创建的,那对象字面量是不是也是通过函数创建的,答案是肯定得,这是一种语法糖,demo
let a = {name:'123'}
let obj = new Object()
obj.name = "123"
上面的对象字面量其实是通过下面的构造函数来创建的,其中的Object是一种函数
console.log(typeof Object)//function
通过上面的简单例子我们可以得出一个结论
对象是通过函数创建的,而函数又是一种对象。