JavaScript中常说 万物皆对象。下面简单分析一下这句话,加深对js的一些深入的理解。
js中数据类型:1.原始数据类型 2.引用数据类型
原始数据类型:number,undefined,null,string,boolean
引用数据类型:object
使用typeof检查数据类型 可以知道 typeof(null)返回的是object。
这是由于计算机存储造成的
在底层存储对象时都是二进制,JavaScript中如果二进制前三位都是0就会被判断为object类型,
null的二进制表示全是0,所以返回的是“object”。
所谓对象,都有自己的属性和方法。
可以操作对象的属性,进行增删改查
写一个函数类对象
function fun(){}
1.增 fun.age = 20; 直接 函数名.属性名 = 属性值
2.删 delete fun.age; 使用delete 函数名.属性名
3.改 fun.age = 18; 存在的函数名.属性名 = 更新的属性值
4.查 fun.age ;
可以看出函数是可以直接当成对象使用的。
而原始数据类型:number,undefined,null,string,boolean
原始数据类型存储在栈中 他们的存储结构是不能改变的,改变的可以是地址。
var str = "hello world";
str = 123;
console.log(str)
打印出来肯定是123。 因为str的存住地址发生了改变。
引用数据类型 是存储在堆和栈中 但对象里面去增加属性和方法是不会改变存储的地址的。
如果给原始类型添加属性 str.age = 18; 不会报错,但在系统检查为原始数据类型的瞬间会被删除。