利用Object.defineProperty挂接set钩子,监控对象属性的修改事件
- 2020 年 3 月 9 日
- 筆記
测试代码:
<html> <script> "use strict"; function test(){ Object.defineProperty(window, "_name", { get : function(){ console.log("gett is called ") }, set : function(newValue){ debugger; console.log("_name is filled!!!!"); }, enumerable : true, configurable : true }); for( var i = 0; i < 2; i++) console.log(i); window._name = "2"; }; test(); </script>
通过第5行开始的Object.defineProperty, 给window全局对象的_name属性设置了一个set hook,这样每当该属性被update时,注册的set hook会自动被调用:
测试:
一旦第18行window._name = 2被执行:
set hook会自动触发:
要获取更多Jerry的原创文章,请关注公众号"汪子熙"