回答編集履歴
3
いくつかの箇所の説明文が分かりにくかったため、修正
test
CHANGED
@@ -42,9 +42,9 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
-
ただし、前者がプリミティブ型の文字列であるのに対し、後者は`String`オブジェクトです。`typeof`演算子の判定結果は異なりますし、後者はオブジェクトのように、任意のプロパティを追加できます。
|
45
|
+
ただし、前者がプリミティブ型の文字列であるのに対し、後者は`String`オブジェクトです。`typeof`演算子の判定結果は異なりますし、後者はオブジェクトのように、任意のプロパティやメソッドを追加できます。
|
46
46
|
|
47
|
-
以下が分かりやすい解説です:
|
47
|
+
以下が、分かりやすい解説ページです:
|
48
48
|
|
49
49
|
|
50
50
|
|
@@ -88,9 +88,13 @@
|
|
88
88
|
|
89
89
|
|
90
90
|
|
91
|
-
`Location`オブジェクトは、文字列化したときに`href`プロパティの値になるよう動作します。
|
91
|
+
* `Location`オブジェクトは、文字列化したときに`href`プロパティの値になるよう動作します。
|
92
92
|
|
93
|
-
|
93
|
+
* `String`オブジェクトは配列アクセス演算子(`[0]`など)による操作を可能にするため、文字列を分割して格納するようにできています。
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
それぞれ、別のオブジェクトの「決まり」であり、この2つが組み合わさった時にそのような動作をします。
|
94
98
|
|
95
99
|
|
96
100
|
|
@@ -108,11 +112,11 @@
|
|
108
112
|
|
109
113
|
文字列としてしか使用しないなら、`new String`による`String`オブジェクトの取得ではなく、最初に例示したコードのような形でプリミティブ型の文字列を取得したほうが良いと思います。
|
110
114
|
|
111
|
-
文字列として利用するなら動作に変わりは無いので、ややこしくないプリミティブ型の文字列の方が適切です。
|
115
|
+
文字列として利用するだけなら動作に変わりは無いので、ややこしくないプリミティブ型の文字列の方が適切です。
|
112
116
|
|
113
117
|
|
114
118
|
|
115
|
-
一方、[Mithril](http://mithril.js.org/)の[m.trust](http://mithril.js.org/mithril.trust.html)関数のように、文字列に独自のプロパティを加えたいなら、`String`オブジェクトを利用した方が良いでしょう。
|
119
|
+
一方、[Mithril](http://mithril.js.org/)の[m.trust](http://mithril.js.org/mithril.trust.html)関数のように、文字列値に独自のプロパティやメソッドを加えたいなら、`String`オブジェクトを利用した方が良いでしょう。
|
116
120
|
|
117
121
|
`m.trust`の場合、「`$trusted`というプロパティを加えた`String`オブジェクト」を生成する事で、普通の文字列と区別しています。
|
118
122
|
|
2
Stringオブジェクトとプリミティブ型の文字列とを使い分ける事の説明文が分かりにくかったため、修正
test
CHANGED
@@ -108,7 +108,7 @@
|
|
108
108
|
|
109
109
|
文字列としてしか使用しないなら、`new String`による`String`オブジェクトの取得ではなく、最初に例示したコードのような形でプリミティブ型の文字列を取得したほうが良いと思います。
|
110
110
|
|
111
|
-
文字列として利用するなら
|
111
|
+
文字列として利用するなら動作に変わりは無いので、ややこしくないプリミティブ型の文字列の方が適切です。
|
112
112
|
|
113
113
|
|
114
114
|
|
1
質問に対する具体的な返答を追記
test
CHANGED
@@ -73,3 +73,65 @@
|
|
73
73
|
"hogehoge"[6] // "g"
|
74
74
|
|
75
75
|
```
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
---
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
まとめます。
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
> Locationオブジェクトのhrefプロパティを分割してオブジェクトへ格納するという決まりがあるのでしょうか?
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
`Location`オブジェクトは、文字列化したときに`href`プロパティの値になるよう動作します。
|
92
|
+
|
93
|
+
そして、`String`オブジェクトは配列のような操作のため、文字列を分割して格納するようにできています。
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
> Stringオブジェクトの値(?)が"https://teratail.com/"ってこと?
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
と解釈しても問題ありません。
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
> 今後どうやって使用するのでしょうか?
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
文字列としてしか使用しないなら、`new String`による`String`オブジェクトの取得ではなく、最初に例示したコードのような形でプリミティブ型の文字列を取得したほうが良いと思います。
|
110
|
+
|
111
|
+
文字列として利用するなら区別する必要は無いので、ややこしくないプリミティブ型の文字列の方が適切です。
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
一方、[Mithril](http://mithril.js.org/)の[m.trust](http://mithril.js.org/mithril.trust.html)関数のように、文字列に独自のプロパティを加えたいなら、`String`オブジェクトを利用した方が良いでしょう。
|
116
|
+
|
117
|
+
`m.trust`の場合、「`$trusted`というプロパティを加えた`String`オブジェクト」を生成する事で、普通の文字列と区別しています。
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
[mithril.js/mithril.js at next · lhorie/mithril.js](https://github.com/lhorie/mithril.js/blob/next/mithril.js#L1289-L1293)
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
```JavaScript
|
126
|
+
|
127
|
+
m.trust = function (value) {
|
128
|
+
|
129
|
+
value = new String(value) // eslint-disable-line no-new-wrappers
|
130
|
+
|
131
|
+
value.$trusted = true
|
132
|
+
|
133
|
+
return value
|
134
|
+
|
135
|
+
}
|
136
|
+
|
137
|
+
```
|