JavaScript Object Definition

在JavaScript中,对象是王。如果您理解了对象,就理解了JavaScript。

在JavaScript中,几乎“所有事物”都是对象。

  • 布尔是对象(如果用 new 关键词定义)
  • 数字是对象(如果用 new 关键词定义)
  • 字符串是对象(如果用 new 关键词定义)
  • 日期永远都是对象
  • 算术永远都是对象
  • 正则表达式永远都是对象
  • 数组永远都是对象
  • 函数永远都是对象
  • 对象永远都是对象

所有JavaScript值,除了原始值,都是对象。

JavaScript原始值

原始值指的是没有属性或方法的值。

原始数据类型指的是拥有原始值的数据。

JavaScript定义了5种原始数据类型:

  • string
  • number
  • boolean
  • null
  • undefined

原始值是一成不变的(它们是硬编码的,因此不能改变)。

假设x = 3.14,您能够改变x的值。但是您无法改变3.14的值。

类型 注释
"Hello" string "Hello"始终是"Hello"
3.14 number 3.14始终是3.14
true boolean true始终是true
false boolean false始终是false
null null (object) null始终是null
undefined undefined undefined始终是undefined

对象是包含变量的变量

JavaScript变量能够包含单个的值:

Eksempel

var person = "Bill Gates";

Prøv det selv

对象也是变量。但是对象能够包含很多值。

值按照名称 : 值对的形式编写(名称和值以冒号分隔)。

Eksempel

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};

Prøv det selv

JavaScript对象是命名值的集合。

对象属性

JavaScript对象中的命名值,被称为属性

属性
firstName Bill
lastName Gates
age 62
eyeColor blue

以名称值对书写的对象类似于:

  • PHP中的关联数组
  • Python中的字典
  • C 中的哈希表
  • Java 中的哈希映射
  • Ruby 和 Perl 中的散列

对象方法

方法是可以在对象上执行的动作

对象属性可以是原始值、其他对象以及函数。

对象方法是包含函数定义的对象属性。

属性
firstName Bill
lastName Gates
age 62
eyeColor blue
fullName function() {return this.firstName + " " + this.lastName;}

JavaScript 对象是被称为属性和方法的命名值的容器。

您将在下一章中学到更多有关方法的知识。

创建 JavaScript 对象

通过 JavaScript,您能够定义和创建自己的对象。

有不同的方法来创建对象:

  • 定义和创建单个对象,使用对象文字。
  • 定义和创建单个对象,通过关键词 new。
  • 定义对象构造器,然后创建构造类型的对象。

在 ECMAScript 5 中,也可以通过函数 Object.create() 来创建对象。

使用对象字面量

这是创建对象最简答的方法。

使用对象文字,您可以在一条语句中定义和创建对象。

对象文字指的是花括号 {} 中的名称:值对(比如 age:62)。

下面的例子创建带有四个属性的新的 JavaScript 对象:

Eksempel

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};

Prøv det selv

空格和折行不重要。对象定义可横跨多行:

Eksempel

var person = {
    firstName:"Bill",
    lastName:"Gates",
    age:62,
    eyeColor:"blue"
};

Prøv det selv

使用 JavaScript 关键词 new

下面的例子也创建了带有四个属性的新的 JavaScript 对象:

Eksempel

var person = new Object();
person.firstName = "Bill";
person.lastName = "Gates";
person.age = 50;
person.eyeColor = "blue"; 

Prøv det selv

上面的两个例子结果是一样的。无需使用 new Object()

For at fremme enkelhed, læsbarhed og eksekveringshastighed, brug venligst den første metode til oprettelse (objekttekstmethode).

JavaScript objekter er ændringsvenlige

Objekter er ændringsvenlige: de adresseres gennem referencer, ikke værdier.

Hvis person er et objekt, vil følgende sætning ikke oprette en kopi af person:

var x = person;  // Dette opretter ikke en kopi af person.

objektet x er ikke en kopi af person. Deter person.x og person er det samme objekt.

Enhver ændring af x vil ændre person, fordi x og person er de samme objekter.

Eksempel

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"}
var x = person;
x.age = 10;           // Dette ændrer både x.age og person.age samtidig

Prøv det selv

Bemærk:JavaScript variabler er ikke ændringsvenlige. Kun JavaScript objekter er det.