回答編集履歴
2
訂正
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
|
-
|
75
|
+
return 'boo';
|
76
76
|
|
77
77
|
}
|
78
78
|
|
1
コメントを受けて追記
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は非対応のようですね……
|