aboutsummaryrefslogtreecommitdiff
path: root/files
diff options
context:
space:
mode:
authorMasahiro FUJIMOTO <mfujimot@gmail.com>2022-02-17 22:40:50 +0900
committerMasahiro FUJIMOTO <mfujimot@gmail.com>2022-02-26 16:04:26 +0900
commitf6ceeec73546dae8d4b7847cc81742dc8bae3abb (patch)
treed1dc066efdf2280e5bfd1258c18cc202ec9e8c90 /files
parent152bdebdcf64e9a9756471fbbec6e871c498e337 (diff)
downloadtranslated-content-f6ceeec73546dae8d4b7847cc81742dc8bae3abb.tar.gz
translated-content-f6ceeec73546dae8d4b7847cc81742dc8bae3abb.tar.bz2
translated-content-f6ceeec73546dae8d4b7847cc81742dc8bae3abb.zip
2021/07/21 時点の英語版に同期
Diffstat (limited to 'files')
-rw-r--r--files/ja/web/javascript/reference/operators/new.target/index.md57
1 files changed, 26 insertions, 31 deletions
diff --git a/files/ja/web/javascript/reference/operators/new.target/index.md b/files/ja/web/javascript/reference/operators/new.target/index.md
index ba65c7b49f..f26949cf0d 100644
--- a/files/ja/web/javascript/reference/operators/new.target/index.md
+++ b/files/ja/web/javascript/reference/operators/new.target/index.md
@@ -2,22 +2,25 @@
title: new.target
slug: Web/JavaScript/Reference/Operators/new.target
tags:
-- Classes
-- ECMAScript 2015
-- JavaScript
-- 言語機能
-- リファレンス
+ - クラス
+ - ECMAScript 2015
+ - JavaScript
+ - 言語機能
+ - リファレンス
+browser-compat: javascript.operators.new_target
translation_of: Web/JavaScript/Reference/Operators/new.target
---
{{JSSidebar("Operators")}}
-<strong>`new.target`</strong> は擬似プロパティで、関数やコンストラクターが [new](/ja/docs/Web/JavaScript/Reference/Operators/new) 演算子を使用して呼び出されたかどうかを検出することができます。 [new](/ja/docs/Web/JavaScript/Reference/Operators/new) 演算子を使用して呼び出されたコンストラクターや関数の中では、 `new.target` はコンストラクターや関数への参照を返します。通常の関数呼び出しの場合、 `new.target` は {{jsxref("undefined")}} になります。
+**`new.target`** は擬似プロパティで、関数やコンストラクターが [new](/ja/docs/Web/JavaScript/Reference/Operators/new) 演算子を使用して呼び出されたかどうかを検出することができます。 [new](/ja/docs/Web/JavaScript/Reference/Operators/new) 演算子を使用して呼び出されたコンストラクターや関数の中では、 `new.target` はコンストラクターや関数への参照を返します。通常の関数呼び出しの場合、 `new.target` は {{jsxref("undefined")}} になります。
{{EmbedInteractiveExample("pages/js/expressions-newtarget.html")}}
## 構文
-<pre class="brush: js">new.target</pre>
+```js
+new.target
+```
## 解説
@@ -33,24 +36,26 @@ translation_of: Web/JavaScript/Reference/Operators/new.target
## 例
-<h3 id="new.target_in_function_calls">関数呼び出しにおける new.target の使用</h3>
+### 関数呼び出しにおける new\.target の使用
通常の関数呼び出しでは (コンストラクター関数の呼び出しとは対照的に)、 `new.target` は {{jsxref("undefined")}} になります。これにより、関数が [new](/ja/docs/Web/JavaScript/Reference/Operators/new) でコンストラクターとして呼び出されたかを検出できます。
-<pre class="brush: js">function Foo() {
+```js
+function Foo() {
if (!new.target) { throw 'Foo() must be called with new' }
console.log('Foo instantiated with new')
}
-new Foo() // logs "Foo instantiated with new"
-Foo() // throws "Foo() must be called with new"
-</pre>
+new Foo() // "Foo instantiated with new" を出力
+Foo() // "Foo() must be called with new" 例外が発生
+```
-<h3 id="new.target_in_constructors">コンストラクターにおける new.target</h3>
+### コンストラクターにおける new\.target
クラスのコンストラクターでは、`new.target` は `new` で直接実行されたコンストラクターを参照します。これは、コンストラクターが親クラスにあり、子コンストラクターから委任された場合も同様です。
-<pre class="brush: js">class A {
+```js
+class A {
constructor() {
console.log(new.target.name)
}
@@ -65,32 +70,22 @@ class C { constructor() { console.log(new.target) } }
class D extends C { constructor() { super() } }
let c = new C() // logs class C{constructor(){console.log(new.target);}}
-let d = new D() // logs class D extends C{constructor(){super();}}</pre>
+let d = new D() // logs class D extends C{constructor(){super();}}
+```
-<p class="summary">上記の `C` および `D` クラスの例から、 `new.target` は初期化されたクラスのクラス定義を指しているように見えます。たとえば、`d` を `new D()` で初期化した場合は、 `D` のクラス定義が出力され、同様に `c` の場合は `C` のクラスが出力されます。</p>
+上記の `C` および `D` クラスの例から、 `new.target` は初期化されたクラスのクラス定義を指しているように見えます。たとえば、`d` を `new D()` で初期化した場合は、 `D` のクラス定義が出力され、同様に `c` の場合は `C` のクラスが出力されます。
## 仕様書
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">仕様書</th>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-built-in-function-objects', 'Built-in Function Objects')}}</td>
- </tr>
- </tbody>
-</table>
+{{Specifications}}
## ブラウザーの互換性
-{{Compat("javascript.operators.new_target")}}
+{{Compat}}
## 関連情報
-<ul>
- [関数](/ja/docs/Web/JavaScript/Reference/Functions)
- [クラス](/ja/docs/Web/JavaScript/Reference/Classes)
-- `[new](/ja/docs/Web/JavaScript/Reference/Operators/new)`
-- `[this](/ja/docs/Web/JavaScript/Reference/Operators/this)`
-</ul>
+- [`new`](/ja/docs/Web/JavaScript/Reference/Operators/new)
+- [`this`](/ja/docs/Web/JavaScript/Reference/Operators/this)