diff options
author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-02-17 22:40:50 +0900 |
---|---|---|
committer | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-02-26 16:04:26 +0900 |
commit | f6ceeec73546dae8d4b7847cc81742dc8bae3abb (patch) | |
tree | d1dc066efdf2280e5bfd1258c18cc202ec9e8c90 /files | |
parent | 152bdebdcf64e9a9756471fbbec6e871c498e337 (diff) | |
download | translated-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.md | 57 |
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) |