JS เวอร์ชันเก่าตั้งชื่อตามตัวเลข: ES5 (2009) และ ES6 (2015)
ตั้งแต่ปี 2559 เป็นต้นไป เวอร์ชันต่างๆ จะตั้งชื่อตามปี: ECMAScript 2016, 2017, 2018, 2019, ...
บทนี้จะแนะนำคุณสมบัติใหม่ใน ECMAScript 2017:
การขยายสตริง JavaScript
รายการวัตถุ JavaScript()
ค่าวัตถุ JavaScript()
JavaScript async และรอ
JavaScript Object.getOwnPropertyDescriptors
ECMAScript 2017 เพิ่มวิธีสตริงสองวิธีให้กับ JavaScript: padStart()
และ padEnd()
เพื่อรองรับการเติมที่จุดเริ่มต้นและจุดสิ้นสุดของสตริง
let text = "5";
text = text.padStart(4,0);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The padStart() Method</h2>
<p>The padStart() method pads a string from the start.</p>
<p>It pads the string with another string (multiple times) until it reaches a given length.</p>
<p id="demo"></p>
<script>
let text = "5";
text = text.padStart(4,"0");
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
let text = "5";
text = text.padEnd(4,0);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The padEnd() Method</h2>
<p>The padEnd() method pads a string at the end.</p>
<p>It pads the string with another string (multiple times) until it reaches a given length.</p>
<p id="demo"></p>
<script>
let text = "5";
text = text.padEnd(4,"0");
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
การรองรับสตริง JavaScript ได้รับการสนับสนุนในเบราว์เซอร์สมัยใหม่ทั้งหมดตั้งแต่เดือนเมษายน 2017:
Chrome 57 | Edge 15 | Firefox 48 | Safari 10 | Opera 44 |
Mar 2017 | Apr 2017 | Aug 2016 | Sep 2016 | Mar 2017 |
ECMAScript 2017 เพิ่มเมธอด Object.entries()
ให้กับอ็อบเจ็กต์
Object.entries()
ส่งกลับอาร์เรย์ของคู่คีย์/ค่าในวัตถุ:
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
let text = Object.entries(person);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Methods</h2>
<p>The Object.entries() method returns an array of the key/value pairs in an object:</p>
<p id="demo"></p>
<script>
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
let text = Object.entries(person);
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Object.entries()
ทำให้ง่ายต่อการใช้วัตถุในวง:
const fruits = {Bananas:300, Oranges:200, Apples:500};
let text = "";
for (let [fruit, value] of Object.entries(fruits)) {
text += fruit + ": " + value + "<br>";
}
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Methods</h2>
<p>Object.entries() makes it simple to use objects in loops:</p>
<p id="demo"></p>
<script>
const fruits = {Bananas:300, Oranges:200, Apples:500};
let text = "";
for (let [fruit, amount] of Object.entries(fruits)) {
text += fruit + ": " + amount + "<br>";
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Object.entries()
ยังทำให้การแปลงวัตถุเป็นแผนที่เป็นเรื่องง่าย:
const fruits = {Bananas:300, Oranges:200, Apples:500};
const myMap = new Map(Object.entries(fruits));
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Methods</h2>
<p>Object.entries() makes it simple to convert Object to Map:</p>
<p id="demo"></p>
<script>
const fruits = {Bananas:300, Oranges:200, Apples:500};
const myMap = new Map(Object.entries(fruits));
document.getElementById("demo").innerHTML = myMap;
</script>
</body>
</html>
Object.entries()
ได้รับการสนับสนุนในเบราว์เซอร์สมัยใหม่ทั้งหมดตั้งแต่เดือนมีนาคม 2017:
Chrome 47 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Jun 2016 | Aug 2016 | Jun 2016 | Mar 2017 | Oct 2016 |
Object.values()
คล้ายกับ Object.entries()
, แต่ส่งคืนอาร์เรย์มิติเดียวของค่าวัตถุ:
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
let text = Object.values(person);
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Object Methods</h2>
<p>The Object.values() method returns an array of values from an object:</p>
<p id="demo"></p>
<script>
const person = {
firstName : "John",
lastName : "Doe",
age : 50,
eyeColor : "blue"
};
let text = Object.values(person)
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Object.values()
ได้รับการสนับสนุนในเบราว์เซอร์สมัยใหม่ทั้งหมดตั้งแต่เดือนมีนาคม 2017:
Chrome 54 | Edge 14 | Firefox 47 | Safari 10.1 | Opera 41 |
Oct 2016 | Aug 2016 | Jun 2016 | Mar 2017 | Oct 2016 |
async function myDisplay() {
let myPromise = new Promise(function(myResolve, myReject) {
setTimeout(function() { myResolve("I love You !!"); }, 3000);
});
document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();
ลองด้วยตัวคุณเอง →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript async / await</h2>
<p>Wait 3 seconds (3000 milliseconds) for this page to change.</p>
<h1 id="demo"></h1>
<script>
async function myDisplay() {
let myPromise = new Promise(function(resolve) {
setTimeout(function() {resolve("I love You !!");}, 3000);
});
document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();
</script>
</body>
</html>
Firefox และ Chrome เป็นเบราว์เซอร์แรกที่รองรับฟังก์ชัน async JavaScript:
Chrome 55 | Edge 15 | Firefox 52 | Safari 11 | Opera 42 |
Dec 2016 | Apr 2017 | Mar 2017 | Sep 2017 | Dec 2016 |