В этой статье рассматриваются новые возможности ES7 и основы javascript с точки зрения разработчика ruby. Я не специалист по JS, поэтому буду использовать аналогии для упрощения понятий или сравню их с рубином для понимания.

Основы JavaScript

Классы

Мы также можем использовать классы в JS:

class Person {
  name = 'name';
  method_one = () => {};  
}
const personA = new Person()
personA.method_one()
personaA.name

Классы также поддерживают наследование, и вы можете реализовать метод конструктора:

class person extends Human {
  constructor(){
    super();
    this.name = 'Max';
  } 
}

Примитивные типы и ссылки

Объекты и массивы используют ссылку, а значения примитивов — нет. Это именно то, что происходит в рубине.

const num = 1
const num2 = num // This is a real copy of num
const person = {
  name: 'P'
};
const person2 = person // This is a reference in memory to the person object

Поведение метода dup в ruby ​​можно реализовать с помощью оператора «». У вас есть раздел об этом операторе ниже.

Метод map также существует в JS

«карта» работает точно так же, как в ruby

const numbers = [1, 2, 3];
const numbers_2 = numbers.map((num) => {
  return num * 2
});
// The output will be this array: [2, 4, 6]

Javascript с ES7

Let и const

Введение let и const меняет область действия переменных в сценах.

Подводя итог, старый «var» — это «let», а const определяет постоянные значения, которые являются неизменяемыми.

Функции и функции со стрелками

// function
function myFnc(args){}
// arrow function
const myFnc = (args) => {}

Новый способ решает проблемы с использованием «этого» из-за обеспечения контекста.

// For only one arg you can skip the parenthesis
// if it's going to return directly you can remove the brackets and // the return statement
const myFnc = arg => arg + 1

Свойства классов

Что касается свойств, то между ES6 и ES7 есть некоторые различия.

// ES6
constructor(){
  this.prop = 'a'
}
// ES7
prop = 'a'
// ES7 behind the scenes will use the constructor, but you don't need to call it explicitiy

Оператор (…)

Оператор «…» разделяет элементы ИЛИ свойства объекта, а также может объединять аргументы.

// with arrays
const newArray = [...oldArray, 1, 2, 3]
// with classes
const newPerson = {
  ...person,
  age: 32
}

Разрушение

Легко извлекайте элементы массива или свойства объектов и сохраняйте их в переменных.

const elements = [1, 2, 3];
[num1, , num3] = elements;
console.log(num1, num3)

Экспорт по умолчанию и именованный экспорт

Когда вы хотите импортировать в другой файл какой-то фрагмент кода, у вас есть зарезервированное слово «по умолчанию».

Когда вы определяете «экспорт по умолчанию», вы получите это при импорте по умолчанию.

// car.js
const car = {}
export default car
// app.js
import car from './car.js'
import vehicle from './car.js'
// car or vehicle or whatever. It doesn't matter always refers to 
// the car constant in car.js

Если в экспорте ничего не определено как значение по умолчанию, вы должны указать имя переменной в импорте.

// utils.js
export const version = 1;
// main.js
import { version } from './utils.js'