За прошедшие годы JavaScript развивались, и в языковой синтаксис был добавлен различные функции. Некоторые из синтаксиса кажутся странными и неизвестными, поэтому вот некоторые из тех, которые я обнаружил за несколько лет, я работаю с JavaScript.
Регулярный способ доступа к свойствам объекта в JavaScript аналогичен другому C вроде языков E.g Получение свойства INVALLAME объекта человека IS Человек. Задача
. Другим способом доступа к этим свойствам является лечение свойств, таких как ключи от карты E.G Человек ['firstname']
Отказ Этот способ доступа к свойствам объекта не ограничивается только полями/атрибутами, но и методы также могут быть доступны таким образом. Ниже приведен пример, используя доступ к способам доступа, как ключ карты.
// create an array arr var arr = ["hello"]; // access the push method of array prototype. arr["push"]("Spankie"); console["log"](arr); // prints out: ["hello", "Spankie"]
Свойства объединения объектов в JavaScript всегда были сделаны с Объект
метод прототипа назначать
, но есть и другие способы, которыми это может быть достигнуто, что делается с использованием синтаксиса распространения ...
. Вот пример;
let obj1 = { name: "Spankie" }; let obj2 = { greeting: "Hello", greet: () => console.log(this.greeting), sayhello: function() { console.log(this.greeting); }}; // concatenating obj2 properties into obj1... let obj3 = {...obj1, ...obj2} obj3.greet(); // prints out: undefined obj3.sayhello(); // prints out: "Hello"
Как упоминалось ранее, получение атрибутов объекта можно сделать несколькими способами, и другой способ выполнения этого является деконструкцией объекта. Это способ получения конкретного атрибута от объекта и присвоения его переменной с тем же именем, что и атрибут. Например, извлечение first_name
атрибут из человек
объект и присвоение его имени переменной first_name
можно сделать легко, как это;
const person = {first_name: "Spankie", last_name: "Dee"}; const { first_name } = person; console.log(first_name); // prints out "Spankie";
Переименование деконструированных переменных
const person = {first_name: "Spankie", last_name: "Dee", address: { street: "1 Main st.", city: "Lagos", country: "Nigeria" }}; const { address: myaddress } = person; console.log(myaddress); // prints out "{street: "1 Main st.", city: "Lagos", country: "Nigeria"}"
Деконструкция атрибутов вложенного объекта
const person = {first_name: "Spankie", last_name: "Dee", address: { street: "1 Main st.", city: "Lagos", country: "Nigeria" }}; const { address: { city, country } } = person; console.log(city, country); // prints out "Lagos Nigeria"; console.log(address); // Error: address is not defined.
Использование json.parse ()
С шаблонными литералами можно довольно сложно …
const a = "A girl has no face"; const b = {stark: "Winter is coming."}; console.log(JSON.parse(a)); // this would throw an unexpected token error console.log(JSON.parse(b)); // this would throw an unexpected token error console.log(JSON.parse(`${a}`)); // this would throw an unexpected token error console.log(JSON.parse(`"${a}"`)); // this would log "A girl has no face" console.log(JSON.parse(`"${b}"`)); // this would log "[object Object]" console.log(JSON.parse(`${b}`)); // this would throw an unexpected token error
Что будет работать в любом из этих случаев:
console.log(JSON.parse(JSON.stringify(a))); // or console.log(JSON.parse(JSON.stringify(b)));
Оба будут работать нормально.
Доступ к объекту OOP Стиль с использованием метода GetTers и Deversters довольно популярен, JavaScript не освобождается от этого, на самом деле это довольно интересно, как это делается в JavaScript.
Соседниты и получатели могут быть определены для атрибута, использующего получать
и Установить
Ключевые слова в объекте. Вот пример, показывающий, как это делается;
const vehicle = { name: "Volvo", year: "1999", // using getters and setter to set/get the year. get description() { return `This ${this.name} was made in ${this.year}`; }, set description(desc) { var descs = desc.toString().split(' '); this.name = descs[0]; this.year = descs[1]; } } vehicle.description = "Mercedes 2018"; console.log(vehicle.description); // prints out "Mercedes was made in 2018"
Иногда вы можете назначить значение атрибуту объекта, не зная именно имя атрибута, но имя является значением другой переменной. Вот пример, объясняющий это;
const carname = "volkswagen"; const caryear = 1937; let CarsFounded = { "bmw": 1916, "mercedes benz": 1926, [carname]: caryear, } console.log(CarsFounded); // prints out: { bmw: 1916, 'mercedes benz': 1926, volkswagen: 1937 } console.log(CarsFounded[carname]); // prints out: 1937
Спасибо за чтение этого до конца:). Вы можете проверить некоторые из моих статей здесь
Оригинал: “https://dev.to/spankie/interesting-javascript-features-74j”