TGViewer
As For JS As For JS @asforjavascript · 3.07K subscribers
Post #393 3.92K
Отгадка на задачу Задача для Senior JS Developer
Напишите код (или опишите принцип), который бы запретил выполнение любого метода любой функции кроме заданного. Например кроме console.log.

// Ваш код 
{
// внутри этого блока можно вызвать ТОЛЬКО console.log
// и не существует никакой возможности вызвать что-то еще
console.log("Start"); // Работает как ожидается
alert("Yo"); // игнорируется
new Promise(); // игнорируется
setTimeout( ()=>{}); // игнорируется
console.log("End"); // Работает как ожидается
}



Решение задачи возможно в non strict mode, с использование with и Proxy:

var theWhiteList = {
console
// , Promise
// , setTimeout
// , alert
};

var doNope = function(){};

var theObj = new Proxy(
theWhiteList
, {
get: ()=> doNope
, has: (theObj, theKey)=>!( theObj[theKey] )
}
);


with ( theObj )
{
console.log("Start"); // Работает как ожидается
alert("Yo"); // игнорируется
new Promise(); // игнорируется
setTimeout( ()=>{ console.log("time"); }); // игнорируется
console.log("End"); // Работает как ожидается
}


Обозначенный выше proof of concept легко адаптируется не только для функциональных обьектов, но и для идентификаторов связанных с прочими типами.

В настоящий момент в спецификацию продвигают Shadow Realm, которые позволят создавать подобные песочницы намного более простым способом.

А так же активно обсуждается тема адаптации with для use strict

with - это единсвенный способ прямой манипуляции контекстом исполнения.


Для чего использовались подобные решения?
для создания песочниц, где необходимо было наложить ограничения на выполнение кода третьих лиц.
  • 👍 45
  • ❤ 5
  • 👎 3
  • 🤯 2
More from @asforjavascript
  1. Oct 17, 2026Бекстейджи, ну смешно же запредельный уроверь самоиронии https://youtube.com/shorts/Zb3u1-…
  2. Oct 17, 2026https://youtu.be/dfpSk7SoNx0?si=p6NaF0x6RPIj0j28
  3. Oct 17, 2026Пусть єто будет последний островок, где люди хотят научиться играть в шахматы.
  4. Oct 16, 2026Где-то через 10-20 минут будет єпичная трансляция Мурыч вс Климов 2-00 https://youtube.com…
  5. Oct 16, 2026Отвал башки https://youtu.be/kTIwNfMfD4c?si=kohta4jFjP1Mk1ab
  6. Oct 15, 2026Люди любят тех, кто помогает им, любить себя.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →