Skip to content

变量和对象

原始类型:number、string、boolean、null、undefined

引用类型:object、function 函数

在变量中存放对象

  1. 通过变量,读取对象中的某个属性
js
变量名.属性名

当读取的属性不存在时,会得到undefined

当读取属性的对象不存在(undefined 或 null)时,程序报错

  1. 通过变量,更改对象中的某个属性

当赋值的属性不存在时,会添加属性

  1. 删除属性
js
delete 变量名.属性名;
  1. 属性表达式

给属性赋值,或读取属性时,可以使用下面的格式操作

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);

找引用类型的地址时,一定要画图,表明内存空间的改动,这样才不会出错。

MIT License