Skip to content

Latest commit

 

History

History
204 lines (156 loc) · 4.9 KB

ES2017.MD

File metadata and controls

204 lines (156 loc) · 4.9 KB

ES2017 (ES8)

برای دیدن ویژگیهای کامل زبان ECMAScript 8 ، لینک ES2017 standard را ببنید

ES8 شامل ویژگیهای جدید زیر می شود:


async function

تابع غیرهمزمان یک آبجکت(شیٔ) از نوع AsyncFunction است و عملیات غیر همزمانی را توسط مدیریت رویدادها (Event Loop) انجام میدهد. syntax بسیار شبیه به توابع همزمان است.

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()

Object.entries

به ما این امکان را می دهد که از هر جفت کلید/مقدار یک آبجکت ، آرایه ای بر گرداند. دقت کنید که ترتیب به همان صورتی که در حلقه `for...in` هست می باشد.

#### Syntax:
  • Object.entries(obj)
  • @params: obj
  • returns: Array

Examples:

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()

Object.values

آرایه ای از مقادیر یک آبجکت را بر می گرداند. دقت کنید که ترتیب به همان صورتی که در حلقه `for...in` هست می باشد.

Syntax:

  • Object.values(obj)
  • @params: obj
  • returns: Array

Examples:

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()

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

آخرین کامای اضافی در یک آرایه یا آبجکت باعث خطا نمی شود- آنها نادیده گرفته می شوند.

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..', 
}