JavaScript基础(四)
对象
定义
大体类似于C++中的类:属性+方法。
记得加逗号,还有每个属性都是 属性:属性值 的格式
null 类似 let obj = {},typeof null 是 ’object‘
使用
-
查 :对象.属性
-
改 :对象.属性 = 值
-
增 :对象名.新属性名 = 新值 或者 对象名[ ‘属性名’ ]
-
删 :delete 对象名.属性名
方法的调用
记得加()
遍历方法
因为不同于数组,对象是无序的数据,所以要有一种新的遍历方法。
for in 语法中的k是一个变量,在循环的过程中依次代表对象的属性名
牢记:k是获得对象的属性名 , 对象名[k] 是获得 属性值
数组可以用这种方法,但不推荐
数组对象
如果要遍历每一个属性或方法的话,在数组循环里面再加一个对象循环
内置对象
JavaScript内部提供的对象,包含各种属性和方法给开发者调用。
跟C++里面内置了stirng类型的函数,cin,cout函数等一样。
-
Math
-
random:生成 [ 0, 1) 之间的随机数
常用:
生成 0~数组长度 的整数
生成N-M之间的整数
-
ceil:向上取整
-
floor:向下取整
-
max:找最大值
-
min:找最小数
-
pow:幂运算
-
abs:绝对值
-
拓展
术语解释
基本数据类型和引用数据类型
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
-
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身 ,因此叫做值类型。
- string ,number,boolean,undefined,null
-
引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址 (引用),因此叫做引用数据类型。
- 通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等
栈和堆内存空间分配
1、栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。
简单数据类型存放到栈里面
2、堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。
引用数据类型存放到堆里面
地址存在栈里,内容存在地址在堆中所对应的空间
常见问题:
上半部分是简单数据类型,存放的是值(在栈中),互不干扰,不共用同一块内存。
下半部分是复杂数据类型,在栈中存放地址,在堆中存放内容,赋值运算符 = 只是简单的浅拷贝,将obj存放的地址赋给了obj2,造成两者在堆中共用同一块内存空间,所以改了obj2属性的值也是改了obj属性的值。
有点像C++拷贝构造的深拷贝浅拷贝的问题