คู่มือ JavaScript ระดับสูง
การกำหนดสไตล์
การกำหนดสไตล์ผ่านแอตทริบิวต์ style
หน่วยวัดในแอตทริบิวต์ style
ข้อผิดพลาดเกี่ยวกับหน่วยวัด
การแตกค่า CSS properties
การรีเซ็ตสไตล์ผ่าน style
การตั้งค่าสไตล์แบบจำนวนมาก
ปัญหาการอ่านสไตล์
การอ่านคุณสมบัติจากไฟล์ CSS
การแปลงค่าที่อ่านได้
การกำหนดสไตล์ด้วยคลาส
คลาสเดียวสำหรับการกำหนดสไตล์
ความไม่สะดวกของคลาส
การสลับสไตล์ผ่าน data-
เมตริกขององค์ประกอบ
การขยายองค์ประกอบใน CSS
องค์ประกอบทดสอบ
ขนาดไคลเอ็นต์ขององค์ประกอบ
ขนาดเต็มขององค์ประกอบ
ขนาดขององค์ประกอบที่สามารถเลื่อนได้
การเลื่อนองค์ประกอบ
การเปลี่ยนแปลงการเลื่อนขององค์ประกอบ
การเลื่อนองค์ประกอบไปจนสุด
การกางองค์ประกอบออก
ความกว้างของแถบเลื่อน
เมตริกของหน้าต่าง
ขนาดของหน้าต่าง
ขนาดของหน้าต่างรวมการเลื่อน
การรับค่าการเลื่อนหน้าต่าง
การรับและเปลี่ยนค่าการเลื่อนหน้าต่าง
เมธอดสำหรับเลื่อนหน้าต่างไปยังตำแหน่ง
เมธอดสำหรับเลื่อนหน้าต่างตามค่า
เมธอดสำหรับเลื่อนหน้าต่างไปยังองค์ประกอบ
เหตุการณ์การเลื่อน
คอลเลกชัน Map
ชุดข้อมูล Set
บทนำ
การกำหนดค่าเริ่มต้น
คุณสมบัติและเมธอดที่มีประโยชน์
การวนซ้ำด้วยลูป
การแปลงประเภท
การลบข้อมูลซ้ำออกจากอาร์เรย์
การรับข้อมูลโดยไม่มีค่าซ้ำ
อาเรย์เทียม
บทนำ
ความคล้ายคลึงกับอาเรย์
ความแตกต่าง
การตรวจสอบว่าคืออาเรย์หรือไม่
การแปลงเป็นอาเรย์
ประเภทของอาเรย์เทียม
ความแตกต่างระหว่างประเภท
สัญลักษณ์
แนะนำประเภท Symbol
คำอธิบายของสัญลักษณ์
สัญลักษณ์เป็นคีย์ของอ็อบเจกต์
การวนลูปอ็อบเจกต์ที่มีสัญลักษณ์
ฟังก์ชันในอ็อบเจกต์
การดำเนินการกับอ็อบเจกต์ในฟังก์ชัน
สัญลักษณ์ระดับโลก
การรับชื่อของสัญลักษณ์
สัญลักษณ์ที่รู้จักกันดี
อิเทอเรเตอร์
อ็อบเจ็กต์ที่สามารถวนซ้ำได้
ฟังก์ชันอิเทอเรเตอร์
การเรียกใช้อิเทอเรเตอร์
เจเนอเรเตอร์
ลูปในเจเนอเรเตอร์
การทำงานครั้งเดียวของอิเทอเรเตอร์
อิเทอเรเตอร์ของอ็อบเจ็กต์
การสร้างอ็อบเจ็กต์ที่สามารถวนซ้ำได้
เจเนอเรเตอร์ผ่านคุณสมบัติที่คำนวณได้
อิเทอเรเตอร์ในตัว values
อิเทอเรเตอร์ในตัว keys
อิเทอเรเตอร์ในตัว entries
อิเทอเรเตอร์ในตัวสามชนิด
โอเปอเรเตอร์ spread และอิเทอเรเตอร์
อิเทอเรเตอร์ในตัวของสตริง
อาร์เรย์ของตัวเลข
การนับเลข DOM elements
การรับข้อมูลของ DOM elements
รูปแบบ JSON
สโตร์
บทนำ
สโตร์ในดีบักเกอร์
ข้อมูล
บันทึกเพียงครั้งเดียว
เขียนทับข้อมูล
ลบข้อมูล
ล้างสโตร์
จำนวนรายการ
รับคีย์ตามหมายเลข
วนลูปสโตร์ตามดัชนี
อาร์เรย์ของคีย์และค่าของสโตร์
การเก็บโครงสร้าง
การปรับเปลี่ยนโครงสร้างที่เก็บไว้
แบบฝึกหัด
นิพจน์ทั่วไป
บทนำ
ตัวดำเนินการซ้ำ
วงเล็บจัดกลุ่ม
การหลีกเลี่ยงอักขระพิเศษ
วงเล็บปีกกา
การจำกัดความละโมบ
กลุ่มอักขระ
ชุดอักขระ
การกลับค่าชุดอักขระ
ลักษณะพิเศษของตัวอักษรซีริลลิก
อักขระพิเศษภายในชุด
กลุ่มอักขระภายในชุด
อักขระพิเศษที่ยกเว้นภายในชุด
อักขระหมวกภายในชุด
ลักษณะพิเศษของยัติภังค์ภายในชุด
การละเว้นตัวพิมพ์ใหญ่-เล็ก
จุดเริ่มต้นและจุดสิ้นสุดของบรรทัด
ขอบเขตของคำ
หลายบรรทัด
คำสั่ง 'หรือ'
ตัวแปรที่มีนิพจน์ทั่วไป
เมธอด test
เมธอด search
เมธอด split
เมธอด match
กระเป๋าในเมธอด match
match แบบทั่วโลก
matchAll แบบทั่วโลก
เมธอด exec
คุณสมบัติ lastIndex
กระเป๋าในเมธอด replace
คอลแบ็กในเมธอด replace
กระเป๋าเริ่มต้นในเมธอด replace
กระเป๋าในนิพจน์ทั่วไปเอง
กระเป๋าที่มีชื่อ
กระเป๋าที่มีชื่อภายในนิพจน์
วงเล็บที่ไม่เก็บรักษา
การมองด้านหน้าและด้านหลังแบบบวกและลบ
สตริงที่มีนิพจน์ทั่วไป
แฟล็กสำหรับสตริง
แบ็กสแลชในสตริง
สถานการณ์ยกเว้น
บทนำ
ประเภทของสถานการณ์ที่เกิดขึ้น
การดักจับข้อยกเว้น
การพัฒนาด้วย try-catch
การดักจับข้อยกเว้นในโค้ดซ้อน
อ็อบเจ็กต์ข้อยกเว้น
ประเภทข้อยกเว้นพื้นฐาน
การใช้ประเภทข้อยกเว้น
การโยนข้อยกเว้น
การโยนข้อยกเว้นประเภทต่างๆ
การโยนประเภทข้อยกเว้นของตัวเอง
ตัวอย่างข้อยกเว้นกับแอตทริบิวต์ data-
ตัวอย่างข้อยกเว้นกับ JSON
การส่งผ่านข้อยกเว้น
ความไม่ประสานเวลา (Asynchrony)
รหัสแบบประสานเวลาและไม่ประสานเวลา
ความไม่ประสานเวลาของโมเดลเหตุการณ์
ความไม่ประสานเวลาของการโหลดรูปภาพ
สถานการณ์ข้อยกเว้นในรหัสแบบไม่ประสานเวลา
⁅t⁆การเรียกกลับแบบอะซิงโครนัส⁅/t⁆
⁅t⁆บทนำ⁅/t⁆
⁅t⁆การส่งผลลัพธ์แบบอะซิงโครนัสไปยังการเรียกกลับ⁅/t⁆
⁅t⁆การส่งพารามิเตอร์ไปยังการเรียกกลับแบบอะซิงโครนัส⁅/t⁆
⁅t⁆การจัดการข้อยกเว้นในการเรียกกลับแบบอะซิงโครนัส⁅/t⁆
⁅t⁆การโหลดรูปภาพ⁅/t⁆
⁅t⁆ปัญหาของ callback hell⁅/t⁆
⁅t⁆การโหลดรูปภาพแบบอะซิงโครนัสในลูป⁅/t⁆
Promise (พรอมิส)
ความรู้เบื้องต้นเกี่ยวกับ Promise
สถานการณ์ข้อยกเว้น
วัตถุข้อผิดพลาด
การดักจับข้อยกเว้นแยกกัน
สถานะของ Promise
การเชื่อม Promise เป็นสายโซ่
Promise ภายในสายโซ่
ข้อยกเว้นในสายโซ่ของ Promise
การทำงานกับอาร์เรย์ของ Promise
การสร้าง Promise ที่สำเร็จแล้ว
Promisification ของโค้ดแบบอะซิงโครนัส
ปัญหาของ promise hell
Promise ในสไตล์ซิงโครนัส
ข้อยกเว้นในสไตล์ซิงโครนัส
ไลบรารี
เครื่องมือ
การกำหนดหมายเลขเวอร์ชันเชิงความหมาย
เทอร์มินัล
NodeJS
ความรู้เบื้องต้นเกี่ยวกับ npm
การติดตั้งผ่าน npm
รูปแบบการติดตั้งแบบสั้น
การอ้างอิงในไฟล์ package.json
การอ้างอิงสำหรับนักพัฒนา (Dev dependencies)
รูปแบบหมายเลขเวอร์ชันของการอ้างอิง
การตั้งค่าไฟล์ package.json
การสร้างไฟล์ package.json
การย้ายโปรเจค npm
ไฟล์ package-lock.json
การอัปเดตแพ็กเกจ
การถอนการติดตั้งแพ็กเกจ
การติดตั้งทั่วระบบผ่าน npm
การถอนการติดตั้งแพ็กเกจทั่วระบบ
เครื่องมือ npx
การรันสคริปต์ผ่าน npm
ตัวจัดการแพ็กเกจ Yarn
โมดูล ES
ความรู้เบื้องต้นเกี่ยวกับโมดูล
การเปิดใช้งานโมดูล ES
การติดตั้ง Webpack
หลักการทำงานของ Webpack
การตั้งค่า Webpack
การตั้งค่าการรันการ build Webpack
การทดสอบ build ผ่าน Webpack
การเชื่อมต่อ bundle กับ markup
การสร้างโมดูล ES
การเชื่อมต่อโมดูล ES
การเปลี่ยนชื่อเมื่อ import
การ import เนื้อหาทั้งหมดของโมดูล
การ export แบบ default
การรวมการ export
การ import เนื้อหาทั้งหมดเมื่อมีการรวมการ export
การ export ค่า
ค่าคงที่
การ import โมดูล npm
การ import แบบไดนามิก
การ import แบบไดนามิกหลายรายการ
การแปลงโมดูล CommonJS
โปรโตคอล HTTP
เซิร์ฟเวอร์ทดสอบ
บทนำ
การใช้
การประมวลผลโค้ด
การสร้าง HTML
ส่วนหัวการตอบสนอง
การกำหนดค่าพอร์ต
การเรียกใช้งานหลายครั้ง
แบบฟอร์ม
การส่งแบบฟอร์ม
วิธีการส่งแบบฟอร์ม
การส่งแบบฟอร์มด้วยวิธี GET
การส่งแบบฟอร์มด้วยวิธี POST
คำขอ GET
การนำคำขอ GET ไปใช้
ปุ่มของแบบฟอร์ม
การส่งแบบฟอร์มผ่าน JavaScript
การป้องกันการส่งแบบฟอร์ม
รู้จักกับ FormData
วิธีการของ FormData
ตัววนซ้ำของ FormData
AJAX
รู้จักกับ AJAX
พื้นฐานการทำงานกับ fetch
รหัสสถานะ HTTP
ความสำเร็จของคำขอ
สถานการณ์ผิดปกติ
การดักจับข้อผิดพลาดแบบสมบูรณ์
ส่วนหัว HTTP ของการตอบกลับ
การรับ JSON
ส่วนหัว HTTP ของคำขอ
คำขอ GET
คำขอ POST
ข้อมูลผ่าน URLSearchParams
ข้อมูลผ่าน FormData
การส่งแบบฟอร์มทั้งหมด
การส่ง JSON
นโยบาย CORS
การส่งคุกกี้
สไตล์แบบประสานเวลา
การทำงานกับ Canvas
การปรับปรุงโค้ดให้เหมาะสม
ปัจจัยความเร็วในการโหลดเว็บไซต์
ทรัพยากรที่สามารถใช้ได้
การปรับปรุงการดำเนินการซ้ำๆ ให้เหมาะสม
การปรับปรุงการทำซ้ำของการดำเนินการที่หนัก
การปรับปรุงการดำเนินการที่เป็นวงจรให้เหมาะสม
การปรับปรุงรอบการวนซ้ำที่เกินจำเป็น
การปรับปรุงผ่านฟังก์ชันในตัว
การเลือกอัลกอริทึมที่เหมาะสมที่สุด
การปรับปรุงการใช้ regular expression ให้เหมาะสม
การปรับปรุงการทำงานกับ DOM
การปรับปรุงการบริโภคหน่วยความจำ
การปรับปรุงการแปลงเป็นอาร์เรย์
การปรับปรุงตัวจัดการเหตุการณ์
การปรับปรุงความเร็วด้วยการใช้หน่วยความจำ
ข้อมูล
ความคงตัวของข้อมูล (Immutability)
การคัดลอกอาร์เรย์
การคัดลอกออบเจ็กต์
การเพิ่มองค์ประกอบในอาร์เรย์
การลบองค์ประกอบของอาร์เรย์
การเปลี่ยนแปลงองค์ประกอบของอาร์เรย์
อาร์เรย์ของออบเจ็กต์
การสร้างรหัสสุ่ม (Random ID)
การเพิ่มองค์ประกอบพร้อมรหัส (ID)
การลบองค์ประกอบตามรหัส (ID)
การเปลี่ยนแปลงองค์ประกอบตามรหัส (ID)
การเปลี่ยนแปลงคุณสมบัติเดียวตามรหัส (ID)
การรับองค์ประกอบตามรหัส (ID)