回答編集履歴

1

ちょっと回答に不備があったので修正

2018/02/04 09:27

投稿

turbgraphics200
turbgraphics200

スコア4269

test CHANGED
@@ -4,23 +4,39 @@
4
4
 
5
5
  ```js
6
6
 
7
- const orgStyle = line1st.style; // styleへの参照を退避
7
+ const line1st = document.querySelect('#line_1st');
8
8
 
9
- Object.defineProperty(line1st.style, 'display', {
9
+ const orgStyle = hoge.style;
10
10
 
11
+ // スタイルオブジェクトのプロキシオブジェクトを生成
12
+
13
+ const proxyStyle = Object.assign({}, orgStyle);
14
+
11
- /*get: _ => { // 取得時も調べたい場合
15
+ // styleプロパティにプロキシオブジェクトをセット
16
+
17
+ hoge.style = proxyStyle;
18
+
19
+
20
+
21
+ // プロキシオブジェクトをフック
22
+
23
+ Object.defineProperty(proxyStyle, 'display', {
24
+
25
+ get: _ => {
12
26
 
13
27
  debugger;
14
28
 
15
29
  return orgStyle.display;
16
30
 
17
- },*/
31
+ },
18
32
 
19
- set: val => {
33
+ set: value => {
20
34
 
21
35
  debugger;
22
36
 
37
+ console.log('set display', value);
38
+
23
- // orgStyle.display = val; setter内で値を設定しなければ変更されない
39
+ orgStyle.display = value;
24
40
 
25
41
  }
26
42
 
@@ -31,5 +47,3 @@
31
47
  といったコードを仕込み、devTools立ち上げてページをリロードすれば、displayスタイルを設定したときに止まるので、
32
48
 
33
49
  あとはコールスタック辿ればどこで設定しているのかを調べることができます。
34
-
35
- また、setter内でorgStyleに値を設定しなければ、displayスタイルが変更されることもないでしょう。