برای دیدن ویژگیهای کامل زبان ECMAScript 8 ، لینک ES2017 standard را ببنید
ES8 شامل ویژگیهای جدید زیر می شود:
تابع غیرهمزمان یک آبجکت(شیٔ) از نوع AsyncFunction است و عملیات غیر همزمانی را توسط مدیریت رویدادها (Event Loop) انجام میدهد. syntax بسیار شبیه به توابع همزمان است.
- async function name([param[, param[, ... param]]]) { statements }
- @name: نام تابع
- @param: پارامتر تابع
- statements: بدنه تابع
- returns: بر می گرداند Promis eنوع
const resolveAfter3Seconds = function() {
console.log('starting 3 second promsise')
return new Promise(resolve => {
setTimeout(function() {
resolve(3)
console.log('done in 3 seconds')
}, 3000)
})
}
const resolveAfter1Second = function() {
console.log('starting 1 second promise')
return new Promise(resolve => {
setTimeout(function() {
resolve(1)
console.log('done, in 1 second')
}, 1000)
})
}
const sequentialStart = async function() {
console.log('***SEQUENTIAL START***')
const one = await resolveAfter1Second()
const three = await resolveAfter3Seconds()
console.log(one)
console.log(three)
}
sequentialStart() // invoke async function
Object.entries
به ما این امکان را می دهد که از هر جفت کلید/مقدار یک آبجکت ، آرایه ای بر گرداند. دقت کنید که ترتیب به همان صورتی که در حلقه `for...in` هست می باشد.
#### Syntax:Object.entries(obj)
- @params:
obj
- returns: Array
basic example
const obj = { self: 'that', norf: 'quux' }
console.log(Object.entries(obj))
// => [ ['self', 'that'], ['norf', 'quux'] ]
درصورتی که کلیدهای آبجکت عدد باشند خروجی به صورت مرتب شده خواهد بود.
const obj = { 50: 'a', 1: 'b', 5: 'c' }
console.log(Object.entries(obj))
// => [ ['1', 'b'], ['5', 'c'], ['50', 'a'] ]
Object.values
آرایه ای از مقادیر یک آبجکت را بر می گرداند. دقت کنید که ترتیب به همان صورتی که در حلقه `for...in` هست می باشد.
Object.values(obj)
- @params:
obj
- returns: Array
basic example
const obj = { a: 100, b: 200 }
console.log(Object.values(obj))
// => [100, 200]
mixed
const obj = { foo: 'foo', bar: [100, 200], baz: 55 }
console.log(Object.values(obj))
// => ['foo', [100, 200], 55 ]
string
const myStr = 'Lufthansa'
console.log(Object.values(myStr))
// => ["L", "u", "f", "t", "h", "a", "n", "s", "a"]
Object.getOwnPropertyDescriptors()
پراپرتی های یک آبجکت را توصبف می کند. توصیف کننده پراپرتی یک رکورد با یکی از صفت های زیر است:
- value
- writable
- get
- set
- configurable
- enumerable
let myObj = {
property1: 'foo',
property2: 'bar',
property3: 42,
property4: () => console.log('prop4')
}
Object.getOwnPropertyDescriptors(myObj)
/*
{ property1: {…}, property2: {…}, property3: {…}, property4: {…} }
property1: {value: "foo", writable: true, enumerable: true, configurable: true}
property2: {value: "bar", writable: true, enumerable: true, configurable: true}
property3: {value: 42, writable: true, enumerable: true, configurable: true}
property4: {value: ƒ, writable: true, enumerable: true, configurable: true}
__proto__: Object
*/
آخرین کامای اضافی در یک آرایه یا آبجکت باعث خطا نمی شود- آنها نادیده گرفته می شوند.
trailing commas in array
let arr = [
10,
20,
30,
40,
50,
]
arr // [10, 20, 30, 40, 50]
arr.length // 5
trailing commas in object
const obj = {
trailing: 'comma',
is: 'allowed',
in: 'JavaScript..',
}