การประกายโอปเจกต์ JavaScript

在 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 变量能够包含单个的值:

ตัวอย่าง

var person = "Bill Gates";

ทดลองด้วยตัวเอง

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

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

ตัวอย่าง

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

ทดลองด้วยตัวเอง

JavaScript 对象是命名值的集合。

对象属性

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

property ค่า
firstName Bill
lastName Gates
age 62
eyeColor blue

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

  • PHP 中的关联数组
  • Python 中的字典
  • hash table ใน C
  • hash map ใน Java
  • hash ใน Ruby และ Perl

object method

method คือสิ่งที่สามารถทำงานบน objectaction

object property สามารถเป็นค่าตัวเดี่ยว ตัวเก็บค่าอื่น หรือ function

object methodเป็นส่วนที่function definitionของ Object

property ค่า
firstName Bill
lastName Gates
age 62
eyeColor blue
fullName function() {return this.firstName + " " + this.lastName;}

JavaScript Object คือตัวเก็บค่าที่มีชื่อเรียกว่า property และ method

คุณจะเรียนรู้เกี่ยวกับ method มากยิ่งขึ้นในบทต่อไป:

สร้าง JavaScript Object

ด้วย JavaScript คุณสามารถกำหนดและสร้าง Object ของตัวเองได้:

มีวิธีที่แตกต่างกันในการสร้าง Object:

  • กำหนดและสร้าง Object โดยใช้ Object literal
  • กำหนดและสร้าง Object โดยใช้คำสั่ง new
  • แล้วสร้าง Object ชนิด constructor ต่อมา:

ใน ECMAScript 5 ก็สามารถสร้าง Object constructor ด้วยฟังก์ชัน Object.create() เพื่อสร้าง Object。

ใช้ Object literal

นี่เป็นวิธีที่ง่ายที่สุดในการสร้าง Object。

ด้วย Object literal คุณสามารถกำหนดและสร้าง Object ในอันหนึ่งอันเดียว:

Object literal หมายถึงเครื่องหมายวงกลม {} ในชื่อ:ค่า (เช่น age:62)。

ตัวอย่างดังกล่าวก็ได้สร้าง JavaScript Object ใหม่ที่มีสี่คุณสมบัติ:

ตัวอย่าง

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

ทดลองด้วยตัวเอง

ช่องว่างและการเลื่อนบรรทัดไม่ได้เป็นประโยชน์ การกำหนด Object สามารถข้ามบรรทัดได้:

ตัวอย่าง

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

ทดลองด้วยตัวเอง

ใช้คำสั่งพิเศษ JavaScript ว่า new

ตัวอย่างดังกล่าวก็ได้สร้าง JavaScript Object ใหม่ที่มีสี่คุณสมบัติ:

ตัวอย่าง

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

ทดลองด้วยตัวเอง

ของสองตัวอย่างดังกล่าวมีผลลัพธ์เดียวกัน ไม่จำเป็นต้องใช้ new Object()

ด้วยความง่าย ความอ่านได้ง่ายและความเร็วการปฏิบัติงาน ให้ใช้วิธีการสร้างที่หนึ่ง (วิธีการสร้างวัตถุข้อความ)

วัตถุ JavaScript สามารถเปลี่ยนแปลงได้

วัตถุเปลี่ยนแปลงได้ง่าย พวกเขาที่นำเข้าด้วยอนุสัญญาณ ไม่ใช่ด้วยค่า

ถ้า 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;           // นี่จะเปลี่ยนแปลงทั้ง x.age และ person.age

ทดลองด้วยตัวเอง

หมายเหตุ:ตัวแปร JavaScript ไม่เปลี่ยนแปลงได้ง่าย มีเพียงวัตถุ JavaScript ที่เปลี่ยนแปลงได้