【发布时间】:2021-02-13 21:50:39
【问题描述】:
在 Ecma6 中,现在可以很容易地观察 Object 的变化,这要归功于 Proxy
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
我正在寻找一种方法来观察任何变量(不仅是对象,还有 int、String..)
例如:
let s = "hello";
s = "world"; // should trigger an event when telling me that s has changed
let x=1;
x = 2; //should trigger an event when telling me that x has changed
let o = {"foo":"bar};
o.foo = "bar2"; //should trigger an event when telling me that o has changed
使用 defineProperty 找到了一些线索,但无法将其应用于“let”变量
【问题讨论】:
-
在 JS 中不可能。
-
你只能通过预处理源代码来做到这一点,例如检测/检测任何变量赋值。 Svelte 就是这样做的(虽然我不知道细节)。
-
强 XY 问题。这有什么好处?