Выделение текста сбрасывается, если в Сафари выделять текст комментария или его часть (например чтобы скопировать). Фокус перебрасывается на заголовок комментария, выделение теряется.
Т. е. выделить текст теперь можно, только если начать «тащить» за пределами блока с текстом комментария.
В конце марта 2021 года «Ростелеком» предложил защитить биометрию россиян с помощью криптографического модуля, который будет шифровать канал связи, чтобы мошенники не могли перехватить биометрические данные.
Вот этот момент совсем не понятен, значит ли это, что сейчас данные из банков в ЕБС ходят по сети в открытом виде, даже без TLS?
Ну так вы и привели код который не будет работать.
setTimeout(myClass.sayHi.call(myClass), 0);
Вы пытаетесь undefined передать как обработчик для setTimeout.
Метод sayHi объекта myClass вызывается сразу, а потом его результат вы зачем-то передаете в setTimeout как колбэк.
Попробуйте поставить таймаут на 1000 миллисекунд, и поймете о чем я говорю.
Да, вы правы. bind, конечно создает новую функцию с зафиксированным контекстом, но он скорее всего будет быстрей, потому что во внутренностях движка есть возможность сослаться на уже существующую в прототипе функцию.
Даже решил немного измерить в попугаях. В Хроме и Файрфоксе bind победил. В Сафари, на удивление, победил вариант со свойствами-стрелками.
Для Ноды тоже написал небольшой тест. Там bind победил вообще с огромным разрывом по скорости и чуть лучшим расходом памяти.
И опять вы правы, значение перетрется.
Но в случае с bind вместо стрелок мы все еще можем получить в наследнике исходный метод через super, а со стрелками не можем, вместо этого словим исключение TypeError: (intermediate value).какаяТоФункция is not a function
Псевдопример с обращением к super
class A {
constructor() {
this.hi = this.hi.bind(this);
}
hi() {
console.log('A');
}
}
class B extends A {
constructor() {
super();
super.hi();
this.hi();
}
hi() {
console.log('B');
}
}
class C {
hi = () => {
console.log('C');
}
}
class D extends C {
constructor() {
super();
super.hi();
this.hi();
}
hi() {
console.log('D');
}
}
new B();
new D();
Постоянно сталкиваюсь, что кто-то использует => вместо bind.
Это прямо как болячка какая-то. И одно дело если экземпляров класса будет 1–10, а другое когда их сильно больше.
prototype довольно удобно до сих пор использовать в фабриках классов и миксинах.
Когда перенаследоваться по какой-то причине нельзя, а логику общую нужно вынести, можно «обогатить» прототипы родственных классов общими методами, или строить конструкторы на лету все еще бывает полезно.
Добавлю еще, что проверка по `instanceof` не всегда будет `true` для объектов.
Мы всегда можем создать объект без прототипа через Object.create. Так как у такого объекта не будет прототипа Object, то и логично, что instanceof не найдет его там.
const a = Object.create(null);
console.log(a instanceof Object) // false
const b = {};
console.log(b instanceof Object) // true
Спасибо за перевод! Возможно пришло время создания платного пакетного репозитория с ручной проверкой пакетов, вроде AppStore, и более высоким уровнем доверия. Остается надеяться, что на его страницах оплаты или авторизации не будет сидеть ничего подобного из статьи =)
Ботмама поддерживает и английский язык. И интегрируется не только с популярными на территории СНГ и РФ мессенджерами.
Есть интеграция и с Телеграмом, и с Ватсапом, и с Фэйсбук Мессенджером, и с Вайбером.
Выделение текста сбрасывается, если в Сафари выделять текст комментария или его часть (например чтобы скопировать). Фокус перебрасывается на заголовок комментария, выделение теряется.
Т. е. выделить текст теперь можно, только если начать «тащить» за пределами блока с текстом комментария.
Вот этот момент совсем не понятен, значит ли это, что сейчас данные из банков в ЕБС ходят по сети в открытом виде, даже без TLS?
Ну так вы и привели код который не будет работать.
Вы пытаетесь
undefined
передать как обработчик дляsetTimeout
.Метод
sayHi
объектаmyClass
вызывается сразу, а потом его результат вы зачем-то передаете вsetTimeout
как колбэк.Попробуйте поставить таймаут на
1000
миллисекунд, и поймете о чем я говорю.Так у вас не получится пробросить метод в обработчик.
Да, вы правы.
bind
, конечно создает новую функцию с зафиксированным контекстом, но он скорее всего будет быстрей, потому что во внутренностях движка есть возможность сослаться на уже существующую в прототипе функцию.Даже решил немного измерить в попугаях. В Хроме и Файрфоксе
bind
победил. В Сафари, на удивление, победил вариант со свойствами-стрелками.Для Ноды тоже написал небольшой тест. Там
bind
победил вообще с огромным разрывом по скорости и чуть лучшим расходом памяти.И опять вы правы, значение перетрется.
Но в случае с
bind
вместо стрелок мы все еще можем получить в наследнике исходный метод черезsuper
, а со стрелками не можем, вместо этого словим исключениеTypeError: (intermediate value).какаяТоФункция is not a function
Постоянно сталкиваюсь, что кто-то использует
=>
вместоbind
.Это прямо как болячка какая-то. И одно дело если экземпляров класса будет 1–10, а другое когда их сильно больше.
С
dialog
могут быть проблемы. Он не поддерживается Safari, а значит для iOS и десктопа его придется полифилить.Я не безопасник, но уникальную соль можно получить из того что имеем.
В паспорте помимо номера есть и другие данные.
Солью может быть
sha256(Последняя буква имени + Последняя буква фамилии)
Тогда итоговый хеш будет таким:
sha256(Номер паспорта + sha256(Последняя буква имени + Последняя буква фамилии))
Но я думаю самым разумным решением было бы не хранить эти данные дольше чем нужно (как и любые другие данные)
UPD: Уникальную в том смысле, что не общую соль для всех.
Кажется это был Pro XDR Display, а не новый iMac
prototype
довольно удобно до сих пор использовать в фабриках классов и миксинах.Когда перенаследоваться по какой-то причине нельзя, а логику общую нужно вынести, можно «обогатить» прототипы родственных классов общими методами, или строить конструкторы на лету все еще бывает полезно.
Мы всегда можем создать объект без прототипа через Object.create. Так как у такого объекта не будет прототипа Object, то и логично, что instanceof не найдет его там.
Например эта