在 JavaScript 中,对象是王。如果您理解了对象,就理解了 JavaScript。
在 JavaScript 中,几乎“所有事物”都是对象。
所有 JavaScript 值,除了原始值,都是对象。
原始值指的是没有属性或方法的值。
原始数据类型指的是拥有原始值的数据。
JavaScript 定义了 5 种原始数据类型:
原始值是一成不变的(它们是硬编码的,因此不能改变)。
假设 x = 3.14,能够改变 x 的值。但是无法改变 3.14 的值。
JavaScript 变量能够包含单个的值:
var person = "Bill Gates";
对象也是变量。但是对象能够包含很多值。
值按照名称 : 值对的形式编写(名称和值以冒号分隔)。
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
JavaScript 对象是命名值的集合。
JavaScript 对象中的命名值,被称为属性。
以名称值对书写的对象类似于:
方法是可以在对象上执行的动作。
对象属性可以是原始值、其他对象以及函数。
对象方法是包含函数定义的对象属性。
JavaScript 对象是被称为属性和方法的命名值的容器。
通过 JavaScript,能够定义和创建自己的对象。
有不同的方法来创建对象:
在 ECMAScript 5 中,也可以通过函数 Object.create()
来创建对象。
创建对象最简单的方法。
使用对象文字,可以在一条语句中定义和创建对象。
对象文字指的是花括号 {}
中的名称:值对(比如 age:62)。
下面的例子创建带有四个属性的新的 JavaScript 对象:
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
空格和折行不重要。对象定义可横跨多行:
var person = {
firstName:"Bill",
lastName:"Gates",
age:62,
eyeColor:"blue"
};
下面的例子也创建了带有四个属性的新的 JavaScript 对象:
var person = new Object();
person.firstName = "Bill";
person.lastName = "Gates";
person.age = 50;
person.eyeColor = "blue";
上面的两个例子结果是一样的。无需使用
new Object()
。出于简易性、可读性和执行速度的考虑,请使用第一种创建方法(对象文字方法)。
对象是易变的:它们通过引用来寻址,而非值。【传递址】
如果 person 是一个对象,下面的语句不会创建 person 的副本:
var x = person; // 这不会创建 person 的副本。
对象 x 并非 person 的副本。它就是 person。x 和 person 是同一个对象。
对 x 的任何改变都将改变 person,因为 x 和 person 是相同的对象。
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"}
var x = person;
x.age = 10; // 这将同时改变 both x.age 和 person.age
**注释:**JavaScript 变量不是易变的。只有 JavaScript 对象如此。