Skip to content

Commit

Permalink
2024/07/15 時点の英語版に基づき更新 (#23620)
Browse files Browse the repository at this point in the history
* 2024/07/15 時点の英語版に基づき更新

* Update index.md
  • Loading branch information
mfuji09 authored Sep 22, 2024
1 parent bfc423d commit 68f122f
Show file tree
Hide file tree
Showing 4 changed files with 169 additions and 42 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
---
title: Symbol.search
slug: Web/JavaScript/Reference/Global_Objects/Symbol/search
l10n:
sourceCommit: 6fbdb78c1362fae31fbd545f4b2d9c51987a6bca
---

{{JSRef}}

**`Symbol.search`** はウェルノウンシンボルで、正規表現に一致する文字列内の位置を返すメソッドを指定します。この関数は {{jsxref("String.prototype.search()")}} メソッドによって呼び出されます
**`Symbol.search`** は静的データプロパティで、[ウェルノウンシンボル](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol#ウェルノウンシンボル)である `Symbol.search` を表します。{{jsxref("String.prototype.search()")}} メソッドは第一引数から、文字列内で現在のオブジェクトに一致する場所を返すメソッドを、このシンボルで探します

詳しくは、 {{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}} と {{jsxref("String.prototype.search()")}} を参照してください。
詳しくは、[`RegExp.prototype[Symbol.search]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.search) と {{jsxref("String.prototype.search()")}} を参照してください。

{{EmbedInteractiveExample("pages/js/symbol-search.html")}}{{js_property_attributes(0,0,0)}}
{{EmbedInteractiveExample("pages/js/symbol-search.html")}}

##

ウェルノウンシンボル `Symbol.search` です。

{{js_property_attributes(0, 0, 0)}}

##

Expand All @@ -25,8 +33,7 @@ class caseInsensitiveSearch {
}
}

console.log("foobar".search(new caseInsensitiveSearch("BaR")));
// expected output: 3
console.log("foobar".search(new caseInsensitiveSearch("BaR"))); // 3
```

## 仕様書
Expand All @@ -39,7 +46,10 @@ console.log("foobar".search(new caseInsensitiveSearch("BaR")));

## 関連情報

- [`Symbol.search` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#ecmascript-symbol)
- {{jsxref("Symbol.match")}}
- {{jsxref("Symbol.matchAll")}}
- {{jsxref("Symbol.replace")}}
- {{jsxref("Symbol.split")}}
- {{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}}
- {{jsxref("String.prototype.search()")}}
- [`RegExp.prototype[Symbol.search]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.search)
Original file line number Diff line number Diff line change
@@ -1,32 +1,38 @@
---
title: Symbol.prototype[@@toPrimitive]
title: Symbol.prototype[Symbol.toPrimitive]()
slug: Web/JavaScript/Reference/Global_Objects/Symbol/Symbol.toPrimitive
original_slug: Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive
l10n:
sourceCommit: 6fbdb78c1362fae31fbd545f4b2d9c51987a6bca
---

{{JSRef}}

**`[@@toPrimitive]()`** メソッドは、 Symbol オブジェクトをプリミティブ値に変換します。
**`[Symbol.toPrimitive]()`** メソッドは、{{jsxref("Symbol")}} オブジェクトをプリミティブ値に変換します。

## 構文

```js-nolint
symbolValue[Symbol.toPrimitive](hint)
```
Symbol()[Symbol.toPrimitive](hint)
```

### 引数

- `hint`
- : 文字列値で、返すプリミティブ値を示します。この値は無視されます。

### 返値

{{jsxref("Symbol")}} オブジェクトで指定されたプリミティブ値です。

## 解説

{{jsxref("Symbol")}} オブジェクトの `[@@toPrimitive]()` メソッドは、 Symbol オブジェクトのプリミティブ値を Symbol データ型として返します。 `hint` 引数は使われません。
`[Symbol.toPrimitive]()`{{jsxref("Symbol")}} オブジェクトのメソッドで、Symbol オブジェクトのプリミティブ値を Symbol データ型として返します。 `hint` 引数は使われません。

JavaScript はオブジェクトをプリミティブ値に変換するために `[@@toPrimitive]()` メソッドを呼び出します。 `[@@toPrimitive]()` メソッドを自分で呼び出す必要はほとんどありません。 JavaScript は、プリミティブ値が期待されているオブジェクトに遭遇したときに、自動的にこれを呼び出します。
JavaScript はオブジェクトをプリミティブ値に変換するために `[Symbol.toPrimitive]()` メソッドを呼び出します。 `[Symbol.toPrimitive]()` メソッドを自分で呼び出す必要はほとんどありません。 JavaScript は、プリミティブ値が期待されているオブジェクトに遭遇したときに、自動的にこれを呼び出します。

##

### @@toPrimitive の使用
### `[Symbol.toPrimitive]()` の使用

```js
const sym = Symbol("example");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
---
title: Symbol.toPrimitive
slug: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive
l10n:
sourceCommit: 6fbdb78c1362fae31fbd545f4b2d9c51987a6bca
---

{{JSRef}}

**`Symbol.toPrimitive`** はシンボルで、あるオブジェクトを対応するプリミティブ値に変換するために呼び出される関数値のプロパティを指定します
**`Symbol.toPrimitive`** は静的データプロパティで、[ウェルノウンシンボル](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol#ウェルノウンシンボル)である `Symbol.toPrimitive` を表します。すべての[型変換](/ja/docs/Web/JavaScript/Data_structures#型変換)アルゴリズムにおいて、すべての型変換アルゴリズムにおいて、オブジェクト上でこのシンボルを使って、その `valueOf()``toString()` メソッドを使用する前に、望ましい型を受け入れ、オブジェクトのプリミティブ表現を返すメソッドを調べます

{{EmbedInteractiveExample("pages/js/symbol-toprimitive.html")}}

##

ウェルノウンシンボル `Symbol.toPrimitive` です。

{{js_property_attributes(0, 0, 0)}}

## 解説

`Symbol.toPrimitive` プロパティにより (関数値として使用して)、オブジェクトがプリミティブ値に変換することができるようになります。関数は、プリミティブ値の結果として好ましい型を指定する文字列引数の `hint` と一緒に呼び出されます。 `hint` 引数は、 "`number`", "`string`", "`default`" のいずれかになります。
`Symbol.toPrimitive` プロパティにより(関数値として使用することで)、オブジェクトをプリミティブ値に変換することができるようになります。関数は、プリミティブ値の結果として好ましい型を指定する文字列引数の `hint` と一緒に呼び出されます。`hint` 引数は、 "`number`", "`string`", "`default`" のいずれかになります。

`"number"` ヒントは、[数値変換](/ja/docs/Web/JavaScript/Data_structures#数値変換)アルゴリズムで使用されます。`"string"` ヒントは、[文字列変換](/ja/docs/Web/JavaScript/Reference/Global_Objects/String#文字列変換)アルゴリズムで使用されます。`"default"` ヒントは、[プリミティブ変換](/ja/docs/Web/JavaScript/Data_structures#プリミティブ変換)アルゴリズムで使用されます。ヒントは、優先順位の弱いシグナルとしてのみ機能し、実装でそれを無視するのは自由です([`Symbol.prototype[Symbol.toPrimitive]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol.toPrimitive) がそうであるように)。`[Symbol.toPrimitive]()` はプリミティブを返さなければなりません。そうでない場合は {{jsxref("TypeError")}} が発生します。

{{js_property_attributes(0,0,0)}}
`[Symbol.toPrimitive]` プロパティを持たないオブジェクトは、`valueOf()` メソッドと `toString()` メソッドを異なる順序で呼び出すことでプリミティブに変換されますが、これについては[型変換](/ja/docs/Web/JavaScript/Data_structures#型変換)の節で詳しく説明します。`[Symbol.toPrimitive]()` では、プリミティブ変換処理を完全に制御できます。例えば、[`Date.prototype[Symbol.toPrimitive]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/Symbol.toPrimitive) は、`"default"` を `"string"` であるかのように扱い、 `valueOf()` の代わりに `toString()` を呼び出します。[`Symbol.prototype[Symbol.toPrimitive]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol.toPrimitive) はヒントを無視し、常にシンボルを返します。つまり、文字列コンテキストでも {{jsxref("Symbol.prototype.toString()")}} は呼び出されず、`Symbol` オブジェクトは常に [`String()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/String) を介して明示的に文字列に変換する必要があります。

##

Expand All @@ -23,26 +33,26 @@ slug: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive

```js
// Symbol.toPrimitive プロパティを持たないオブジェクト。
var obj1 = {};
const obj1 = {};
console.log(+obj1); // NaN
console.log(`${obj1}`); // "[object Object]"
console.log(obj1 + ""); // "[object Object]"

// Symbol.toPrimitive プロパティを持つオブジェクト。
var obj2 = {
const obj2 = {
[Symbol.toPrimitive](hint) {
if (hint == "number") {
if (hint === "number") {
return 10;
}
if (hint == "string") {
if (hint === "string") {
return "hello";
}
return true;
},
};
console.log(+obj2); // 10 -- hint は "number"
console.log(`${obj2}`); // "hello" -- hint は "string"
console.log(obj2 + ""); // "true" -- hint は "default"
console.log(+obj2); // 10 hint は "number"
console.log(`${obj2}`); // "hello" hint は "string"
console.log(obj2 + ""); // "true" hint は "default"
```

## 仕様書
Expand All @@ -55,7 +65,8 @@ console.log(obj2 + ""); // "true" -- hint は "default"

## 関連情報

- {{jsxref("Date.@@toPrimitive", "Date.prototype[@@toPrimitive]")}}
- {{jsxref("Symbol.@@toPrimitive", "Symbol.prototype[@@toPrimitive]")}}
- [`Symbol.toPrimitive` (`core-js`)](https://github.com/zloirock/core-js#ecmascript-symbol)
- [`Date.prototype[Symbol.toPrimitive]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/Symbol.toPrimitive)
- [`Symbol.prototype[Symbol.toPrimitive]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol.toPrimitive)
- {{jsxref("Object.prototype.toString()")}}
- {{jsxref("Object.prototype.valueOf()")}}
Loading

0 comments on commit 68f122f

Please sign in to comment.