回答編集履歴

2

訂正

2019/09/20 07:26

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36158

test CHANGED
@@ -70,9 +70,9 @@
70
70
 
71
71
  const myFunc = function() {
72
72
 
73
- this.prop1 = 'bar';
73
+ if (new.target) this.prop1 = 'bar';
74
74
 
75
- if (!new.target) return 'boo';
75
+ return 'boo';
76
76
 
77
77
  }
78
78
 

1

コメントを受けて追記

2019/09/20 07:26

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36158

test CHANGED
@@ -57,3 +57,31 @@
57
57
  - `new`付きで呼び出すと、空のオブジェクトが`this`に入り、何も起きずそのまま空のオブジェクトが返ってきます。
58
58
 
59
59
  - `new`なしで呼び出すと、何も起きず'boo'が返ってきます。
60
+
61
+
62
+
63
+ ---
64
+
65
+ ### コメントを受けて追記
66
+
67
+ `new.target`を使うといいと思います。
68
+
69
+ ```js
70
+
71
+ const myFunc = function() {
72
+
73
+ this.prop1 = 'bar';
74
+
75
+ if (!new.target) return 'boo';
76
+
77
+ }
78
+
79
+ ```
80
+
81
+ > new.target プロパティは、関数やコンストラクタが new 演算子を使用して呼び出されたかどうかを検出できるようにします。
82
+
83
+ [new.target - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new.target)
84
+
85
+
86
+
87
+ ただ、よく見ると、IEは非対応のようですね……