/\s/
./\(текст\)/
./тут\s+длинная\s+строка.\s+слова\s+разделены\s+пробелами/g
:function spacify(regexp) {
const { source, flags } = regexp;
return new RegExp( source.replace(/\s+([*+{?])?/g, (_, mod) => `\\s${mod ?? '+'}`), flags )
}
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
function toSpacedRegExp(string, flags = 'g') {
return new RegExp( escapeRegExp(string).replace(/\s+/g, '\\s+'), flags )
}
// /тут\s+длинная\s+строка\.\s+слова\s+разделены\s+пробелами/g
const text = toSpacedRegExp('тут длинная строка. слова разделены пробелами')
В моем понимании стрелочная функция берет контекст при объявлении
class Car{
constructor() {
this.name = "BMW"
}
showname = () => {
console.log(this.name);
}
}
let { showname } = new Car();
let obj = {
name: 'random',
showname
}
obj.showname() // всё равно BMW
class Car {
storedThis = this
}
const car = new Car();
const { storedThis } = car;
car === storedThis; // true
contentEditable=true
const {password, ...rest} = user;
console.log(password);
console.log(rest);
return rest;
then
там, или ещё что), то для этого есть встроенный хэлпер:const f = data => Promise.resolve({data});
async
с тем же успехом:const f = async data => ({data});
getSpecialData
точно асинхронная, то можно опустить async await
(потому что оные - всего лишь сахар над Promise
, если функция так или иначе возвращает Promise
- она асинхронна(и наоборот), напоминать ей об этом не надо):getData({params}) {return getSpecialData(p, {params})}
params
и если p
не меняется можно просто забиндить, :getData: getSpecialData.bind(null, p)
getData: wParams => getSpecialData(p, wParams)
params
должен быть единственным ключом - аналогично:getData: ({params}) => getSpecialData(p, {params})
await
можно опустить в любом случае:async getData({params}) {return getSpecialData(p, {params})}
getData: async wParams => getSpecialData(p, wParams)
getData: async ({params}) => getSpecialData(p, {params})