在javascript中,所有变量实际上都是某种类型的对象。(除了null和undefinde)
通过关联数组理解对象
在为数组元素给出下标时,不必局限于使用数字,也可以使用字符串:
var lennon = Array();lennon["name"] = "John";lennon["year"] = 1940;lennon["living"] = false;
这样的数组叫做关联数组。本质上,在创建关联数组时,你创建的是Array对象的属性。在上面的例子中,实际上为lennon数组添加了“name”“year”“living”三个属性。
通过基本包装类型理解对象
为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类型:Boolean、Number和String。每当读取一个基本类型值的时候,后台都会创建一个对应的基本包装类型的对象。对于下面的例子:
var s1 = "some text";var s2 = s1.substring(2); //这个变量像对象一样有方法!
在读取字符串s1时,后台会自动完成以下处理:
创建String类型的一个实例;
在实例上调用指定的方法;
销毁这个实例。
可以将以上三个步骤想象成执行了以下代码:
var s1 = new String("some text");var s2 = s1.substring(2);s1 = null;
引用类型类型与基本包装类型的主要区别就是对象的生存期。使用new操作符创建的引用类型的实例,在执行流离开之前作用域都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。这意味着我们不能在运行时为基本类型值添加属性和方法。