#javascript #console #devtools
#javascript #консоль #devtools
Вопрос:
я ищу ответы на свой вопрос. И я не могу найти ни одного. Так что в качестве примера:
this.connect = false;
if (this.connect) {
alert('CONNECTED');
}
Если я изменю this.connect = true
в моем devtools -> консоль. Это должно привести к появлению предупреждающего сообщения «ПОДКЛЮЧЕНО».
Есть ли какой-нибудь способ сделать это? Будет здорово заставить это работать!
Комментарии:
1. я думаю, вы могли бы использовать прокси обходным путем — но, только если
this
естьwindow
, потому чтоthis
в консоли естьwindow
2. Не могли бы вы привести какой-нибудь пример? Я никогда не использую Прокси.
3. на самом деле, ответ jns не использует прокси, и его гораздо проще понять новичку
Ответ №1:
Редактировать: Прокси не нужен. Просто используйте defineProperty, чтобы определить метод получения / установки для подключенного свойства окна.
Эй, взгляните на этот фрагмент — думаю, это хороший способ начать.
// We are using a property _connected to store the value of the connected property
let _connected = false;
// We are defining a property with the name 'connected' on the this (this = globalThis = window => console dev tool)
Object.defineProperty(this, 'connected', {
get: () => _connected,
set: (value) => {
_connected = value;
console.log(`Setting 'connected' to: ${value}`);
}
});
// Try using this.connected = $val inside your console.
this.connected = true;
this.connected = false;
this.connected = "foo";
Использование прокси, подобного предложенному @Jaromanda X, также возможно, но я думаю, что это не лучшее решение, потому что перезапись window / this / globalThis — scope кажется невозможной:
const _this = new Proxy(window, {
set: (target, key, value) => {
if (key === "connected")
console.log(`Setting 'connected' to set to ${value}`);
target[key] = value;
return true;
}
});
_this.connected = true;
_this.connected = false;
_this.connected = "foo";
Комментарии:
1. Я думаю, что
this
следует заменить наglobalThis
для кросс-платформенной поддержки.2. Да, это был ответ. Я никогда не использовал defineProperty! Мне нужно больше посмотреть в этой теме! Спасибо за ваш ответ. Это оно! Люблю тебя <3