JavaScript Object Definition

In JavaScript, objects are the king. If you understand objects, you understand JavaScript.

Almost everything in JavaScript is an object.

  • Booleans are objects (if used new (keyword definition)
  • Numbers are objects (if used new (keyword definition)
  • Strings are objects (if used new (keyword definition)
  • Dates are always objects
  • Arithmetic is always objects
  • Regular expressions are always objects
  • Arrays are always objects
  • Functions are always objects
  • Objects are always objects

All JavaScript values, except primitive values, are objects.

JavaScript primitive values

Primitive valuesrefers to values that do not have properties or methods.

Primitive data typesrefers to data that has primitive values.

JavaScript defines 5 primitive data types:

  • string
  • number
  • boolean
  • null
  • undefined

Primitive values are immutable (they are hard-coded and therefore cannot be changed).

Suppose x = 3.14, you can change the value of x. But you cannot change the value of 3.14.

Type Comments
"Hello" string "Hello" is always "Hello"
3.14 number 3.14 is always 3.14
true boolean true is always true
false boolean false is always false
null null (object) null is always null
undefined undefined undefined is always undefined

Objects are variables that contain variables

JavaScript variables can contain single values:

Voorbeeld

var person = "Bill Gates";

Probeer het zelf

Objects are also variables. But objects can contain many values.

Values are arranged according toName : Valuenames and values separated by colons).

Voorbeeld

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

Probeer het zelf

JavaScript objects are written in the form ofNamed valuesa collection.

Object properties

Named values in JavaScript objects are called属性.

属性
firstName Bill
lastName Gates
age 62
eyeColor blue

Objects written in name-value pairs are similar to:

  • PHP associative array
  • Python dictionary
  • 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 对象:

Voorbeeld

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

Probeer het zelf

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

Voorbeeld

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

Probeer het zelf

使用 JavaScript 关键词 new

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

Voorbeeld

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

Probeer het zelf

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

Voor eenvoudigheid, leesbaarheid en uitvoersnelheid, gebruik de eerste creatiemethode (object literal methode).

JavaScript objecten zijn veranderlijk

Objecten zijn veranderlijk: ze worden door verwijzing bereikt, niet door waarde.

Als person een object is, zal de volgende statement geen kopie van person maken:

var x = person;  // Dit zal geen kopie van person maken.

object x is niet een kopie van person. Hetis person.x en person zijn dezelfde object.

Elke wijziging aan x zal person veranderen, omdat x en person dezelfde object zijn.

Voorbeeld

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"}
var x = person;
x.age = 10;           // Dit zal zowel x.age als person.age tegelijkertijd veranderen

Probeer het zelf

Opmerking:JavaScript variabelen zijn niet veranderlijk. Alleen JavaScript objecten zijn dat.