ECMAScript 2009 หรือที่รู้จักในชื่อ ES5 เป็นการปรับปรุง JavaScript ครั้งใหญ่ครั้งแรก
บทนี้จะอธิบายคุณลักษณะที่สำคัญที่สุดของ ES5
"ใช้อย่างเข้มงวด"
การเข้าถึงสตริง [หมายเลข]
สตริงหลายบรรทัด
String.trim()
Array.isArray()
อาร์เรย์ forEach()
แผนที่อาร์เรย์()
ตัวกรองอาร์เรย์()
อาร์เรย์ลด()
อาร์เรย์ลด Right()
อาร์เรย์ทุกๆ()
อาร์เรย์บางส่วน()
อาร์เรย์ดัชนีของ()
อาร์เรย์ LastIndexOf()
JSON.แยกวิเคราะห์()
JSON.stringify()
วันที่.ตอนนี้()
วันที่ถึง ISOString()
วันที่ถึง JSON()
ผู้ได้รับทรัพย์สินและผู้ตั้งค่า
คำสงวนเป็นชื่อคุณสมบัติ
วิธีการวัตถุ
วัตถุกำหนดคุณสมบัติ()
ฟังก์ชั่นผูก()
เครื่องหมายจุลภาคต่อท้าย
ES5
ได้รับการสนับสนุนอย่างเต็มที่ในเบราว์เซอร์สมัยใหม่ทั้งหมด:
Chrome | IE | Edge | Firefox | Safari | Opera |
Yes | 9.0 | Yes | Yes | Yes | Yes |
"use strict"
กำหนดว่าโค้ด JavaScript ควรถูกเรียกใช้งานใน "โหมดเข้มงวด"
เมื่อใช้โหมดเข้มงวด คุณจะไม่สามารถใช้ตัวแปรที่ไม่ได้ประกาศได้ เช่น
คุณสามารถใช้โหมดเข้มงวดในทุกโปรแกรมของคุณ ช่วยให้คุณเขียนโค้ดที่สะอาดยิ่งขึ้น เช่น การป้องกันไม่ให้คุณใช้ตัวแปรที่ไม่ได้ประกาศ
"use strict"
เป็นเพียงนิพจน์สตริง เบราว์เซอร์รุ่นเก่าจะไม่เกิดข้อผิดพลาดหากไม่เข้าใจ
อ่านเพิ่มเติมในโหมดเข้มงวด JS
charAt()
วิธีการส่งกลับอักขระที่ระบุ ดัชนี (ตำแหน่ง) ในสตริง:
var str = "HELLO WORLD";
str.charAt(0); // returns H
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript String Methods</h2>
<p>The charAt() method returns the character at a given position in a string:</p>
<p id="demo"></p>
<script>
var str = "HELLO WORLD";
document.getElementById("demo").innerHTML = str.charAt(0);
</script>
</body>
</html>
ES5 อนุญาตให้เข้าถึงคุณสมบัติบนสตริง:
var str = "HELLO WORLD";
str[0]; // returns H
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript String Methods</h2>
<p>ECMAScript 5 allows property acces on strings:</p>
<p id="demo"></p>
<script>
var str = "HELLO WORLD";
document.getElementById("demo").innerHTML = str[0];
</script>
</body>
</html>
การเข้าถึงคุณสมบัติบนสตริงอาจคาดเดาไม่ได้เล็กน้อย
อ่านเพิ่มเติมในวิธีการสตริง JS
"Hello \
Dolly!";
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>
You can break a code line within a text string with a backslash.
</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello \
Dolly!";
</script>
</body>
</html>
วิธี\อาจไม่มีการรองรับแบบสากล
เบราว์เซอร์รุ่นเก่าอาจใช้วิธีนี้ได้ ช่องว่างรอบแบ็กสแลชแตกต่างกัน
เบราว์เซอร์รุ่นเก่าบางรุ่นทำเช่นนั้น ไม่อนุญาตให้มีช่องว่างด้านหลังอักขระ \
วิธีที่ปลอดภัยกว่าในการแยกสตริงตามตัวอักษรคือการใช้สตริง ส่วนที่เพิ่มเข้าไป:
"Hello " +
"Dolly!";
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>The safest way to break a code line in a string is using string addition.</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello " +
"Dolly!";
</script>
</body>
</html>
ES5 อนุญาตให้ใช้คำสงวนเป็นชื่อคุณสมบัติ:
var obj = {name: "John", new: "yes"}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>ECMAScript 5</h1>
<p>ECMAScript 5 allows reserved words as property names.</p>
<p id="demo"></p>
<script>
var obj = {name: "John", new: "yes"};
document.getElementById("demo").innerHTML = obj.new;
</script>
</body>
</html>
trim()
trim()
วิธีการลบช่องว่างออกจากทั้งสองด้านของสตริง
var str = " Hello World! ";
alert(str.trim());
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The trim() Method</h2>
<p id="demo"></p>
<script>
let text1 = " Hello World! ";
let text2 = text1.trim();
document.getElementById("demo").innerHTML =
"Length text1 = " + text1.length + "<br>Length text2 = " + text2.length;
</script>
</body>
</html>
อ่านเพิ่มเติมในวิธีการสตริง JS
Array.isArray()
isArray()
วิธีการตรวจสอบว่าวัตถุเป็นอาร์เรย์หรือไม่
function myFunction() {
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = document.getElementById("demo");
x.innerHTML = Array.isArray(fruits);
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The isArray() Method</h2>
<p>Click the button to check if "fruits" is an array.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = document.getElementById("demo");
x.innerHTML = Array.isArray(fruits);
}
</script>
</body>
</html>
อ่านเพิ่มเติมในอาร์เรย์ JS
forEach()
forEach()
วิธีการเรียกใช้ฟังก์ชันหนึ่งครั้งสำหรับแต่ละองค์ประกอบอาร์เรย์
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value) {
txt = txt + value + "<br>";
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Array.forEach()</h2>
<p>Calls a function once for each array element.</p>
<p id="demo"></p>
<script>
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
document.getElementById("demo").innerHTML = txt;
function myFunction(value) {
txt = txt + value + "<br>";
}
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในวิธีการวนซ้ำอาร์เรย์ JS
map()
ตัวอย่างนี้จะคูณค่าอาร์เรย์แต่ละค่าด้วย 2:
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value) {
return value * 2;
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Array.map()</h2>
<p>Creates a new array by performing a function on each array element.</p>
<p id="demo"></p>
<script>
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
document.getElementById("demo").innerHTML = numbers2;
function myFunction(value, index, array) {
return value * 2;
}
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในวิธีการวนซ้ำอาร์เรย์ JS
filter()
ตัวอย่างนี้สร้างอาร์เรย์ใหม่จากองค์ประกอบที่มีค่ามากกว่า 18:
var numbers = [45, 4, 9, 16, 25];
var over18 =
numbers.filter(myFunction);
function myFunction(value) {
return value > 18;
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Array.filter()</h2>
<p>Creates a new array with all array elements that passes a test.</p>
<p id="demo"></p>
<script>
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
document.getElementById("demo").innerHTML = over18;
function myFunction(value, index, array) {
return value > 18;
}
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในวิธีการวนซ้ำอาร์เรย์ JS
reduce()
ตัวอย่างนี้ค้นหาผลรวมของตัวเลขทั้งหมดในอาร์เรย์:
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);
function myFunction(total, value) {
return total + value;
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Array.reduce()</h2>
<p>This example finds the sum of all numbers in an array:</p>
<p id="demo"></p>
<script>
var numbers = [45, 4, 9, 16, 25];
var sum = numbers.reduce(myFunction);
document.getElementById("demo").innerHTML = "The sum is " + sum;
function myFunction(total, value, index, array) {
return total + value;
}
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในวิธีการวนซ้ำอาร์เรย์ JS
reduceRight()
ตัวอย่างนี้ยังค้นหาผลรวมของตัวเลขทั้งหมดในอาร์เรย์ด้วย:
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceRight(myFunction);
function myFunction(total, value) {
return total + value;
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Array.reduceRight()</h2>
<p>This example finds the sum of all numbers in an array:</p>
<p id="demo"></p>
<script>
var numbers = [45, 4, 9, 16, 25];
var sum = numbers.reduceRight(myFunction);
document.getElementById("demo").innerHTML = "The sum is " + sum;
function myFunction(total, value) {
return total + value;
}
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในวิธีการวนซ้ำอาร์เรย์ JS
ทุก()
ตัวอย่างนี้จะตรวจสอบว่าค่าทั้งหมดมากกว่า 18 หรือไม่:
var numbers = [45, 4, 9, 16, 25];
var allOver18 =
numbers.every(myFunction);
function myFunction(value) {
return
value > 18;
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Array.every()</h2>
<p>The every() method checks if all array values pass a test.</p>
<p id="demo"></p>
<script>
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
document.getElementById("demo").innerHTML = "All over 18 is " + allOver18;
function myFunction(value, index, array) {
return value > 18;
}
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในวิธีการวนซ้ำอาร์เรย์ JS
some()
ตัวอย่างนี้จะตรวจสอบว่าค่าบางค่ามากกว่า 18 หรือไม่:
var numbers = [45, 4, 9, 16, 25];
var allOver18 =
numbers.some(myFunction);
function myFunction(value) {
return
value > 18;
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Array.some()</h2>
<p>The some() method checks if some array values pass a test.</p>
<p id="demo"></p>
<script>
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.some(myFunction);
document.getElementById("demo").innerHTML = "Some over 18 is " + allOver18;
function myFunction(value) {
return value > 18;
}
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในวิธีการวนซ้ำอาร์เรย์ JS
indexOf()
ค้นหาค่าองค์ประกอบในอาร์เรย์และส่งกลับตำแหน่ง
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The indexOf() Method</h2>
<p id="demo"></p>
<script>
const fruits = ["Apple", "Orange", "Apple", "Mango"];
let position = fruits.indexOf("Apple") + 1;
document.getElementById("demo").innerHTML = "Apple is found in position " + position;
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในวิธีการวนซ้ำอาร์เรย์ JS
lastIndexOf()
lastIndexOf()
เหมือนกับ indexOf()
แต่ค้นหาจากจุดสิ้นสุดของอาร์เรย์
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The lastIndexOf() Method</h2>
<p id="demo"></p>
<script>
const fruits = ["Apple", "Orange", "Apple", "Mango"];
let position = fruits.lastIndexOf("Apple") + 1;
document.getElementById("demo").innerHTML = "Apple is found in position " + position;
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในวิธีการวนซ้ำอาร์เรย์ JS
การใช้งาน JSON ทั่วไปคือการรับข้อมูลจากเว็บเซิร์ฟเวอร์
ลองนึกภาพคุณได้รับสตริงข้อความนี้จากเว็บเซิร์ฟเวอร์:
'{"name":"John", "age":30, "city":"New York"}'
ฟังก์ชัน JavaScript JSON.parse()
ใช้ในการแปลงข้อความให้เป็นวัตถุ JavaScript:
var obj = JSON.parse('{"name":"John", "age":30, "city":"New
York"}');
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>Creating an Object from a JSON String</h2>
<p id="demo"></p>
<script>
const txt = '{"name":"John", "age":30, "city":"New York"}'
const obj = JSON.parse(txt);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.age;
</script>
</body>
</html>
อ่านเพิ่มเติมในบทช่วยสอน JSON ของเรา
การใช้งาน JSON ทั่วไปคือการส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์
เมื่อส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์ข้อมูลจะต้องมี สตริง.
ลองนึกภาพเรามีวัตถุนี้ใน JavaScript:
var obj = {name:"John", age:30, city:"New York"};
ใช้ฟังก์ชัน JavaScript JSON.stringify()
เพื่อแปลงเป็นสตริง
var myJSON = JSON.stringify(obj);
ผลลัพธ์จะเป็นสตริงตามสัญกรณ์ JSON
myJSON ตอนนี้เป็นสตริง และพร้อมที่จะส่งไปยังเซิร์ฟเวอร์:
var obj = {name:"John", age:30, city:"New York"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>Create a JSON string from a JavaScript object.</h2>
<p id="demo"></p>
<script>
const obj = {name: "John", age: 30, city: "New York"};
const myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
</script>
</body>
</html>
อ่านเพิ่มเติมในบทช่วยสอน JSON ของเรา
Date.now()
ส่งคืนค่าจำนวนมิลลิวินาทีนับตั้งแต่วันที่เป็นศูนย์ (1 มกราคม 1970 00:00:00 UTC)
var timInMSs = Date.now();
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Date.now()</h2>
<p>Date.now() is new in ECMAScript 5 (2009):</p>
<p id="demo1"></p>
<p id="demo2"></p>
<script>
document.getElementById("demo1").innerHTML = Date.now();
var d = new Date();
document.getElementById("demo2").innerHTML = d.getTime();
</script>
</body>
</html>
Date.now()
ส่งคืนค่าเดียวกันกับ getTime() ดำเนินการกับอ็อบเจ็กต์ Date
เรียนรู้เพิ่มเติมใน JS Dates
toISOString()
toISOString()
วิธีการแปลงวัตถุ Date ให้เป็นสตริงโดยใช้รูปแบบมาตรฐาน ISO:
const d = new Date();
document.getElementById("demo").innerHTML = d.toISOString();
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Dates</h1>
<h2>The toISOString() Method</h2>
<p>Convert a date to a string using the ISO standard:</p>
<p id="demo"></p>
<script>
const d = new Date();
document.getElementById("demo").innerHTML = d.toISOString();
</script>
</body>
</html>
toJSON()
toJSON()
แปลงวัตถุ Date ให้เป็นสตริง โดยจัดรูปแบบเป็นวันที่ JSON
วันที่ของ JSON มีรูปแบบเดียวกับมาตรฐาน ISO-8601: YYYY-MM-DDTHH:mm:ss.sssZ:
d = new Date();
document.getElementById("demo").innerHTML = d.toJSON();
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Date.toJSON()</h2>
<p id="demo"></p>
<script>
d = new Date();
document.getElementById("demo").innerHTML = d.toJSON();
</script>
</body>
</html>
ES5 ให้คุณกำหนดวิธีการของวัตถุด้วยไวยากรณ์ที่ดูเหมือนการรับหรือการตั้งค่า คุณสมบัติ
ตัวอย่างนี้สร้าง getter สำหรับคุณสมบัติที่เรียกว่า fullName:
// Create an object:
var person = {
firstName:
"John",
lastName : "Doe",
get
fullName() {
return this.firstName + " " + this.lastName;
}
};
// Display data from the
object using a getter:
document.getElementById("demo").innerHTML =
person.fullName;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Getters and Setters</h2>
<p>Getters and setters allow you to get and set properties via methods.</p>
<p>This example creates a getter for a property called fullName.</p>
<p id="demo"></p>
<script>
// Create an object:
var person = {
firstName: "John",
lastName : "Doe",
get fullName() {
return this.firstName + " " + this.lastName;
}
};
// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.fullName;
</script>
</body>
</html>
ตัวอย่างนี้สร้าง setter และ getter สำหรับคุณสมบัติภาษา:
var person = {
firstName: "John",
lastName : "Doe",
language : "NO",
get lang() {
return this.language;
},
set lang(value) {
this.language = value;
}
};
// Set an object
property using a setter:
person.lang = "en";
// Display data from the
object using a getter:
document.getElementById("demo").innerHTML =
person.lang;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Getters and Setters</h2>
<p>Getters and setters allow you to get and set properties via methods.</p>
<p>This example creates a setter and a getter for the language property.</p>
<p id="demo"></p>
<script>
// Create an object:
var person = {
firstName: "John",
lastName : "Doe",
language : "NO",
get lang() {
return this.language;
},
set lang(value) {
this.language = value;
}
};
// Set an object property using a setter:
person.lang = "en";
// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.lang;
</script>
</body>
</html>
ตัวอย่างนี้ใช้ setter เพื่อรักษาความปลอดภัยการอัปเดตตัวพิมพ์ใหญ่ของภาษา:
var person = {
firstName: "John",
lastName : "Doe",
language : "NO",
set lang(value) {
this.language = value.toUpperCase();
}
};
// Set an object
property using a setter:
person.lang = "en";
// Display data from the
object:
document.getElementById("demo").innerHTML =
person.language;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Getters and Setters</h2>
<p>Getters and setters allow you to get and set properties via methods.</p>
<p>This example has a modified setter to secure upper case uppdates of language.</p>
<p id="demo"></p>
<script>
// Create an object:
var person = {
firstName: "John",
lastName : "Doe",
language : "",
set lang(value) {
this.language = value.toUpperCase();
}
};
// Set an object property using a setter:
person.lang = "en";
// Display data from the object:
document.getElementById("demo").innerHTML = person.language;
</script>
</body>
</html>
เรียนรู้เพิ่มเติมเกี่ยวกับ Gettes และ Setters ใน JS Object Accessors
Object.defineProperty()
เป็นวิธีการ Object ใหม่ใน ES5
ช่วยให้คุณสามารถกำหนดคุณสมบัติของอ็อบเจ็กต์และ/หรือเปลี่ยนค่าของคุณสมบัติและ/หรือได้ ข้อมูลเมตา
// Create an Object:
var person = {
firstName:
"John",
lastName : "Doe",
language : "NO",
};
// Change a Property:
Object.defineProperty(person, "language", {
value: "EN",
writable : true,
enumerable : true,
configurable : true
});
//
Enumerate Properties
var txt = "";
for (var x in person) {
txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML =
txt;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=iso-8859-2" http-equiv="Content-Type">
</head>
<body>
<h2>JavaScript defineProperty()</h2>
<p id="demo"></p>
<script>
// Create an Object:
var person = {
firstName: "John",
lastName : "Doe",
language : "NO",
};
// Change a Property:
Object.defineProperty(person, "language", {
value: "EN",
writable : true,
enumerable : true,
configurable : true
});
// Enumerate Properties
txt = "";
for (var x in person) {
txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>
</body>
</html>
ตัวอย่างถัดไปคือโค้ดเดียวกัน ยกเว้นว่าจะซ่อนคุณสมบัติภาษาจากการแจงนับ:
// Create an Object:
var person = {
firstName:
"John",
lastName : "Doe",
language : "NO",
};
// Change a Property:
Object.defineProperty(person, "language", {
value: "EN",
writable : true,
enumerable : false,
configurable : true
});
//
Enumerate Properties
var txt = "";
for (var x in person) {
txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML =
txt;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript defineProperty()</h2>
<p id="demo"></p>
<script>
// Create an Object:
var person = {
firstName: "John",
lastName : "Doe",
language : "NO",
};
// Change a Property:
Object.defineProperty(person, "language", {
value: "EN",
writable : true,
enumerable : false,
configurable : true
});
// Enumerate Properties
txt = "";
for (var x in person) {
txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>
</body>
</html>
ตัวอย่างนี้สร้าง setter และ getter เพื่อรักษาความปลอดภัยการอัพเดตตัวพิมพ์ใหญ่ของภาษา:
// Create an Object:
var person = {
firstName: "John",
lastName :
"Doe",
language : "NO"
};
// Change a Property:
Object.defineProperty(person, "language", {
get : function() { return
language },
set : function(value) { language = value.toUpperCase()}
});
// Change Language
person.language = "en";
// Display Language
document.getElementById("demo").innerHTML = person.language;
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript defineProperty()</h2>
<p id="demo"></p>
<script>
// Create an Object:
var person = {
firstName: "John",
lastName : "Doe",
language : "NO"
};
// Change a Property:
Object.defineProperty(person, "language", {
get : function() { return language },
set : function(value) { language = value.toUpperCase()}
});
// Change language
person.language = "en";
// Display language
document.getElementById("demo").innerHTML = person.language;
</script>
</body>
</html>
ES5 เพิ่ม Object Methods ใหม่มากมายให้กับ JavaScript:
// Create object with an existing object as prototype
Object.create(parent, donor)
// Adding or changing an object property
Object.defineProperty(object, property, descriptor)
// Adding or changing object properties
Object.defineProperties(object, descriptors)
// Accessing Properties
Object.getOwnPropertyDescriptor(object, property)
// Returns all properties as an array
Object.getOwnPropertyNames(object)
// Accessing the prototype
Object.getPrototypeOf(object)
// Returns enumerable properties as an array
Object.keys(object)
// Prevents adding properties to an object
Object.preventExtensions(object)
// Returns true if properties can be added to an object
Object.isExtensible(object)
// Prevents changes of object properties (not values)
Object.seal(object)
// Returns true if object is sealed
Object.isSealed(object)
// Prevents any changes to an object
Object.freeze(object)
// Returns true if object is frozen
Object.isFrozen(object)
เรียนรู้เพิ่มเติมในออบเจ็กต์ ECMAScript5
Bind()
ด้วยเมธอด bind()
วัตถุสามารถยืมวิธีการจากวัตถุอื่นได้
ตัวอย่างนี้สร้าง 2 วัตถุ (บุคคลและสมาชิก)
วัตถุสมาชิกยืมวิธีการชื่อเต็มจากวัตถุบุคคล:
const person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
const member = {
firstName:"Hege",
lastName: "Nilsen",
}
let fullName = person.fullName.bind(member);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Function bind()</h1>
<p>This example creates 2 objects (person and member).</p>
<p>The member object borrows the fullname method from person:</p>
<p id="demo"></p>
<script>
const person = {
firstName:"John",
lastName: "Doe",
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const member = {
firstName:"Hege",
lastName: "Nilsen",
}
let fullName = person.fullName.bind(member);
document.getElementById("demo").innerHTML = fullName();
</script>
</body>
</html>
เรียนรู้เพิ่มเติมในฟังก์ชันผูก()
ES5 อนุญาตให้ใช้เครื่องหมายจุลภาคต่อท้ายในคำจำกัดความของวัตถุและอาร์เรย์:
person = {
firstName: "John",
lastName: "
Doe",
age: 46,
}
points = [
1,
5,
10,
25,
40,
100,
];
คำเตือน !!!
JSON ไม่อนุญาตให้ใช้เครื่องหมายจุลภาคต่อท้าย
//
Allowed:
var person = '{"firstName":"John", "lastName":"Doe",
"age":46}'
JSON.parse(person)
// Not allowed:
var person = '{"firstName":"John",
"lastName":"Doe", "age":46,}'
JSON.parse(person)
//
Allowed:
points = [40, 100, 1, 5, 25, 10]
// Not allowed:
points =
[40, 100, 1, 5, 25, 10,]