变量和对象
原始类型:number、string、boolean、null、undefined
引用类型:object、function 函数
在变量中存放对象
- 通过变量,读取对象中的某个属性
js
变量名.属性名当读取的属性不存在时,会得到undefined
当读取属性的对象不存在(undefined 或 null)时,程序报错
- 通过变量,更改对象中的某个属性
当赋值的属性不存在时,会添加属性
- 删除属性
js
delete 变量名.属性名;- 属性表达式
给属性赋值,或读取属性时,可以使用下面的格式操作
js
对象变量["属性名"]- 某些属性名中包含特殊字符
实际上,JS对属性名的命名要求并不严格,属性可以是任何形式的名字
属性的名字只能是字符串,如果你书写的是数字,会自动转换为字符串
全局对象
JS大部分的宿主环境,都会提供一个特殊的对象,该对象可以直接在JS代码中访问,该对象叫做全局对象
在浏览器环境中,全局对象为window,表示整个窗口
全局对象中的所有属性,可以直接使用,而不需要写上全局对象名。
开发者定义的所有变量,实际上,会成为window对象的属性。
如果变量没有被赋值,则该变量不会覆盖window对象上的同名属性。
引用类型
原始类型 引用类型(对象、函数)
原始类型的变量,存放的具体的值
引用类型的变量,存放的是内存地址
凡是出现对象字面量的位置,都一定在内存出现一个新的对象
扩展知识:JS中的垃圾回收 垃圾回收器,会定期的发现内存中无法访问到的对象,该对象称之为垃圾,垃圾回收器会在合适的时间将其占用的内存释放。 对于用户过程无感,由浏览器自己决定
js
var obj1 = {
a: "123",
b: "456",
sub: {
s1: "abc",
s2: "bcd"
}
};
var temp = obj1.sub;
var obj2 = obj1;
obj2.sub = {
s1: "s",
s2: "ddd"
};
console.log(obj1.sub.s1, obj2.sub.s1, temp.s1);// s s abc
console.log(window);找引用类型的地址时,一定要画图,表明内存空间的改动,这样才不会出错。