@rogolev/value 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +19 -1
- package/docs/classes/Value/constructor.md +48 -0
- package/docs/classes/Value/get.md +51 -0
- package/docs/classes/Value/getType.md +71 -0
- package/docs/classes/Value/isArray.md +67 -0
- package/docs/classes/Value/isAssoc.md +68 -0
- package/docs/classes/Value/isBigInt.md +52 -0
- package/docs/classes/Value/isBool.md +60 -0
- package/docs/classes/Value/isBoolean.md +60 -0
- package/docs/classes/Value/isClass.md +55 -0
- package/docs/classes/Value/isEmpty.md +84 -0
- package/docs/classes/Value/isFloat.md +52 -0
- package/docs/classes/Value/isFunction.md +60 -0
- package/docs/classes/Value/isInfinity.md +60 -0
- package/docs/classes/Value/isInt.md +52 -0
- package/docs/classes/Value/isInteger.md +52 -0
- package/docs/classes/Value/isList.md +59 -0
- package/docs/classes/Value/isNaN.md +79 -0
- package/docs/classes/Value/isNull.md +59 -0
- package/docs/classes/Value/isNumber.md +80 -0
- package/docs/classes/Value/isNumeric.md +79 -0
- package/docs/classes/Value/isObject.md +68 -0
- package/docs/classes/Value/isScalar.md +72 -0
- package/docs/classes/Value/isString.md +67 -0
- package/docs/classes/Value/isSymbol.md +75 -0
- package/docs/classes/Value/isUndefined.md +67 -0
- package/docs/classes/Value/print.md +164 -0
- package/docs/classes/Value/printType.md +158 -0
- package/docs/classes/Value/setType.md +79 -0
- package/docs/classes/Value/toArray.md +85 -0
- package/docs/classes/Value/toAssoc.md +85 -0
- package/docs/classes/Value/toBool.md +71 -0
- package/docs/classes/Value/toBoolean.md +71 -0
- package/docs/classes/Value/toFloat.md +72 -0
- package/docs/classes/Value/toInt.md +72 -0
- package/docs/classes/Value/toInteger.md +72 -0
- package/docs/classes/Value/toList.md +77 -0
- package/docs/classes/Value/toObject.md +78 -0
- package/docs/classes/Value/toPrint.md +115 -0
- package/docs/classes/Value/toPrintType.md +110 -0
- package/docs/classes/Value/toString.md +134 -0
- package/docs/classes/Value.md +113 -0
- package/docs/classes.md +2 -0
- package/docs/constants.md +47 -0
- package/docs/helpers/value.md +95 -0
- package/docs/helpers.md +2 -0
- package/index.mjs +3 -0
- package/package.json +2 -2
- package/src/classes/Convert.mjs +818 -819
- package/src/classes/Type.mjs +1284 -1285
- package/src/classes/Value.mjs +2846 -0
- package/src/constants.mjs +14 -0
- package/src/helpers/array.mjs +107 -107
- package/src/helpers/empty.mjs +70 -70
- package/src/helpers/gettype.mjs +149 -133
- package/src/helpers/is_array.mjs +128 -128
- package/src/helpers/is_assoc.mjs +51 -51
- package/src/helpers/is_bigint.mjs +47 -47
- package/src/helpers/is_bool.mjs +43 -43
- package/src/helpers/is_boolean.mjs +43 -43
- package/src/helpers/is_class.mjs +87 -87
- package/src/helpers/is_float.mjs +67 -67
- package/src/helpers/is_function.mjs +74 -74
- package/src/helpers/is_infinity.mjs +52 -52
- package/src/helpers/is_int.mjs +57 -57
- package/src/helpers/is_integer.mjs +74 -74
- package/src/helpers/is_list.mjs +43 -43
- package/src/helpers/is_nan.mjs +51 -51
- package/src/helpers/is_null.mjs +37 -37
- package/src/helpers/is_number.mjs +49 -49
- package/src/helpers/is_numeric.mjs +64 -64
- package/src/helpers/is_object.mjs +72 -72
- package/src/helpers/is_scalar.mjs +45 -45
- package/src/helpers/is_string.mjs +46 -46
- package/src/helpers/is_symbol.mjs +46 -46
- package/src/helpers/is_undefined.mjs +44 -44
- package/src/helpers/print.mjs +245 -245
- package/src/helpers/print_type.mjs +261 -261
- package/src/helpers/settype.mjs +101 -101
- package/src/helpers/to_array.mjs +118 -118
- package/src/helpers/to_assoc.mjs +98 -98
- package/src/helpers/to_bool.mjs +68 -68
- package/src/helpers/to_boolean.mjs +64 -64
- package/src/helpers/to_float.mjs +72 -72
- package/src/helpers/to_int.mjs +93 -93
- package/src/helpers/to_integer.mjs +81 -81
- package/src/helpers/to_list.mjs +56 -56
- package/src/helpers/to_object.mjs +94 -94
- package/src/helpers/to_string.mjs +157 -157
- package/src/helpers/value.mjs +92 -0
- package/tests/classes/Convert.test.mjs +398 -399
- package/tests/classes/Type.test.mjs +1262 -1263
- package/tests/classes/Value.test.mjs +423 -0
- package/tests/constants.test.mjs +75 -0
- package/tests/helpers/array.test.mjs +58 -58
- package/tests/helpers/empty.test.mjs +22 -22
- package/tests/helpers/gettype.test.mjs +74 -74
- package/tests/helpers/is_array.test.mjs +404 -404
- package/tests/helpers/is_assoc.test.mjs +42 -42
- package/tests/helpers/is_bigint.test.mjs +51 -51
- package/tests/helpers/is_bool.test.mjs +43 -43
- package/tests/helpers/is_boolean.test.mjs +43 -43
- package/tests/helpers/is_class.test.mjs +84 -84
- package/tests/helpers/is_float.test.mjs +87 -87
- package/tests/helpers/is_function.test.mjs +83 -83
- package/tests/helpers/is_infinity.test.mjs +46 -46
- package/tests/helpers/is_int.test.mjs +45 -45
- package/tests/helpers/is_integer.test.mjs +64 -64
- package/tests/helpers/is_list.test.mjs +42 -42
- package/tests/helpers/is_nan.test.mjs +43 -43
- package/tests/helpers/is_null.test.mjs +17 -17
- package/tests/helpers/is_number.test.mjs +25 -25
- package/tests/helpers/is_numeric.test.mjs +30 -30
- package/tests/helpers/is_object.test.mjs +52 -52
- package/tests/helpers/is_scalar.test.mjs +21 -21
- package/tests/helpers/is_string.test.mjs +20 -20
- package/tests/helpers/is_symbol.test.mjs +20 -20
- package/tests/helpers/is_undefined.test.mjs +18 -18
- package/tests/helpers/print.test.mjs +62 -62
- package/tests/helpers/print_type.test.mjs +62 -62
- package/tests/helpers/settype.test.mjs +34 -34
- package/tests/helpers/to_array.test.mjs +38 -38
- package/tests/helpers/to_assoc.test.mjs +33 -33
- package/tests/helpers/to_bool.test.mjs +51 -51
- package/tests/helpers/to_boolean.test.mjs +51 -51
- package/tests/helpers/to_float.test.mjs +26 -26
- package/tests/helpers/to_int.test.mjs +48 -48
- package/tests/helpers/to_integer.test.mjs +48 -48
- package/tests/helpers/to_list.test.mjs +32 -32
- package/tests/helpers/to_object.test.mjs +36 -36
- package/tests/helpers/to_string.test.mjs +71 -71
- package/tests/helpers/value.test.mjs +68 -0
|
@@ -0,0 +1,2846 @@
|
|
|
1
|
+
import empty from '../helpers/empty.mjs';
|
|
2
|
+
import gettype from '../helpers/gettype.mjs';
|
|
3
|
+
import is_array from '../helpers/is_array.mjs';
|
|
4
|
+
import is_assoc from '../helpers/is_assoc.mjs';
|
|
5
|
+
import is_bigint from '../helpers/is_bigint.mjs';
|
|
6
|
+
import is_bool from '../helpers/is_bool.mjs';
|
|
7
|
+
import is_class from '../helpers/is_class.mjs';
|
|
8
|
+
import is_float from '../helpers/is_float.mjs';
|
|
9
|
+
import is_function from '../helpers/is_function.mjs';
|
|
10
|
+
import is_infinity from '../helpers/is_infinity.mjs';
|
|
11
|
+
import is_int from '../helpers/is_int.mjs';
|
|
12
|
+
import is_list from '../helpers/is_list.mjs';
|
|
13
|
+
import is_nan from '../helpers/is_nan.mjs';
|
|
14
|
+
import is_null from '../helpers/is_null.mjs';
|
|
15
|
+
import is_number from '../helpers/is_number.mjs';
|
|
16
|
+
import is_numeric from '../helpers/is_numeric.mjs';
|
|
17
|
+
import is_object from '../helpers/is_object.mjs';
|
|
18
|
+
import is_scalar from '../helpers/is_scalar.mjs';
|
|
19
|
+
import is_string from '../helpers/is_string.mjs';
|
|
20
|
+
import is_symbol from '../helpers/is_symbol.mjs';
|
|
21
|
+
import is_undefined from '../helpers/is_undefined.mjs';
|
|
22
|
+
import print from '../helpers/print.mjs';
|
|
23
|
+
import print_type from '../helpers/print_type.mjs';
|
|
24
|
+
import settype from '../helpers/settype.mjs';
|
|
25
|
+
import to_array from '../helpers/to_array.mjs';
|
|
26
|
+
import to_assoc from '../helpers/to_assoc.mjs';
|
|
27
|
+
import to_bool from '../helpers/to_bool.mjs';
|
|
28
|
+
import to_float from '../helpers/to_float.mjs';
|
|
29
|
+
import to_int from '../helpers/to_int.mjs';
|
|
30
|
+
import to_list from '../helpers/to_list.mjs';
|
|
31
|
+
import to_object from '../helpers/to_object.mjs';
|
|
32
|
+
import to_string from '../helpers/to_string.mjs';
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Класс `Value` представляет обертку для значений различных типов и предоставляет методы для работы с ними.
|
|
36
|
+
*
|
|
37
|
+
* ### Описание
|
|
38
|
+
*
|
|
39
|
+
* Класс `Value` используется для хранения значения и предоставления методов для работы с этим значением.
|
|
40
|
+
* Значение хранится в приватном свойстве `#value` и не может быть изменено после создания экземпляра класса.
|
|
41
|
+
* Класс также предоставляет методы для получения типа значения, проверки значения на пустоту, преобразования значения в другие типы и другие операции.
|
|
42
|
+
*/
|
|
43
|
+
class Value {
|
|
44
|
+
/**
|
|
45
|
+
* Приватное свойство для хранения значения.
|
|
46
|
+
*
|
|
47
|
+
* ### Описание
|
|
48
|
+
*
|
|
49
|
+
* Свойство `#value` используется для хранения значения, переданного при создании экземпляра класса `Value`.
|
|
50
|
+
* Значение не может быть изменено после создания экземпляра класса.
|
|
51
|
+
*
|
|
52
|
+
* @type {any}
|
|
53
|
+
*/
|
|
54
|
+
#value;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Приватное хранилище для кэширования вычисленных значений.
|
|
58
|
+
*
|
|
59
|
+
* ### Описание
|
|
60
|
+
*
|
|
61
|
+
* Свойство `#store` используется для хранения кэшированных значений, которые были вычислены методами класса.
|
|
62
|
+
* Это позволяет избежать повторных вычислений одного и того же значения, что может быть полезно для оптимизации производительности.
|
|
63
|
+
*
|
|
64
|
+
* @type {Object}
|
|
65
|
+
*/
|
|
66
|
+
#store = {};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Создает экземпляр класса `Value` с заданным значением.
|
|
70
|
+
*
|
|
71
|
+
* ### Описание
|
|
72
|
+
*
|
|
73
|
+
* const valueInstance = new Value(obj);
|
|
74
|
+
* // Свойство: #value = { key: 'value' }
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* 3. Создание экземпляра класса `Value` с массивом:
|
|
78
|
+
*
|
|
79
|
+
* ```js
|
|
80
|
+
* const arr = [1, 2, 3];
|
|
81
|
+
* const valueInstance = new Value(arr);
|
|
82
|
+
* // Свойство: #value = [1, 2, 3]
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @param {any} value Значение, которое необходимо сохранить в экземпляре класса `Value`.
|
|
86
|
+
*/
|
|
87
|
+
constructor(value) {
|
|
88
|
+
this.#value = value;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Возвращает значение, хранящееся в экземпляре класса `Value`.
|
|
93
|
+
*
|
|
94
|
+
* ### Описание
|
|
95
|
+
*
|
|
96
|
+
* Метод `get` используется для получения значения, переданного при создании экземпляра класса `Value`.
|
|
97
|
+
* Это значение хранится в свойстве `#value` экземпляра и не может быть изменено после создания.
|
|
98
|
+
*
|
|
99
|
+
* ### Возвращаемое значение
|
|
100
|
+
*
|
|
101
|
+
* Возвращает значение, переданное при создании экземпляра класса `Value`.
|
|
102
|
+
*
|
|
103
|
+
* ### Примеры использования
|
|
104
|
+
*
|
|
105
|
+
* 1. Создание экземпляра класса `Value` и получение значения:
|
|
106
|
+
*
|
|
107
|
+
* ```js
|
|
108
|
+
* const valueInstance = new Value(123);
|
|
109
|
+
* const result = valueInstance.get();
|
|
110
|
+
* // Результат: 123
|
|
111
|
+
* ```
|
|
112
|
+
*
|
|
113
|
+
* 2. Создание экземпляра класса `Value` с объектом:
|
|
114
|
+
*
|
|
115
|
+
* ```js
|
|
116
|
+
* const obj = { key: 'value' };
|
|
117
|
+
* const valueInstance = new Value(obj);
|
|
118
|
+
* const result = valueInstance.get();
|
|
119
|
+
* // Результат: { key: 'value' }
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* 3. Создание экземпляра класса `Value` с массивом:
|
|
123
|
+
*
|
|
124
|
+
* ```js
|
|
125
|
+
* const arr = [1, 2, 3];
|
|
126
|
+
* const valueInstance = new Value(arr);
|
|
127
|
+
* const result = valueInstance.get();
|
|
128
|
+
* // Результат: [1, 2, 3]
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @returns {any} Возвращает значение, хранящееся в экземпляре класса `Value`.
|
|
132
|
+
*/
|
|
133
|
+
get() {
|
|
134
|
+
return this.#value;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Возвращает тип значения, хранящегося в экземпляре класса `Value`.
|
|
139
|
+
*
|
|
140
|
+
* ### Описание
|
|
141
|
+
*
|
|
142
|
+
* Метод `getType` используется для получения типа значения, переданного при создании экземпляра класса `Value`.
|
|
143
|
+
* Тип значения определяется с помощью функции `gettype`, которая выполняет различные проверки для определения типа.
|
|
144
|
+
*
|
|
145
|
+
* Функция `gettype` выполняет следующие проверки:
|
|
146
|
+
*
|
|
147
|
+
* 1. **Null**: Проверяет, является ли значение `null`.
|
|
148
|
+
* 2. **NaN**: Проверяет, является ли значение `NaN`.
|
|
149
|
+
* 3. **Undefined**: Проверяет, является ли значение `undefined`.
|
|
150
|
+
* 4. **Infinity**: Проверяет, является ли значение бесконечностью.
|
|
151
|
+
* 5. **Boolean**: Проверяет, является ли значение логическим.
|
|
152
|
+
* 6. **Integer**: Проверяет, является ли значение целым числом.
|
|
153
|
+
* 7. **BigInt**: Проверяет, является ли значение типом BigInt.
|
|
154
|
+
* 8. **Float**: Проверяет, является ли значение числом с плавающей точкой.
|
|
155
|
+
* 9. **String**: Проверяет, является ли значение строкой.
|
|
156
|
+
* 10. **Symbol**: Проверяет, является ли значение символом.
|
|
157
|
+
* 11. **Class**: Проверяет, является ли значение классом.
|
|
158
|
+
* 12. **Function**: Проверяет, является ли значение функцией.
|
|
159
|
+
* 13. **Array**: Проверяет, является ли значение массивом.
|
|
160
|
+
* 14. **Object**: Проверяет, является ли значение объектом.
|
|
161
|
+
*
|
|
162
|
+
* Если значение не соответствует ни одному из этих типов, функция возвращает результат `typeof value`.
|
|
163
|
+
*
|
|
164
|
+
* ### Возвращаемое значение
|
|
165
|
+
*
|
|
166
|
+
* Возвращает строку, представляющую тип значения, хранящегося в экземпляре класса `Value`.
|
|
167
|
+
*
|
|
168
|
+
* ### Примеры использования
|
|
169
|
+
*
|
|
170
|
+
* Создание экземпляра класса `Value` и получение типа значения:
|
|
171
|
+
*
|
|
172
|
+
* ```js
|
|
173
|
+
* const valueInstance = new Value(123);
|
|
174
|
+
* const result = valueInstance.getType();
|
|
175
|
+
* // Результат: 'integer'
|
|
176
|
+
* ```
|
|
177
|
+
*
|
|
178
|
+
* @returns {string} Возвращает тип значения, хранящегося в экземпляре класса `Value`.
|
|
179
|
+
*/
|
|
180
|
+
getType() {
|
|
181
|
+
return this.#getFromStore('type', () => gettype(this.#value));
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Преобразует значение в экземпляре класса `Value` к указанному типу.
|
|
186
|
+
*
|
|
187
|
+
* ### Описание
|
|
188
|
+
*
|
|
189
|
+
* Метод `setType` используется для преобразования значения, хранящегося в экземпляре класса `Value`, к указанному типу.
|
|
190
|
+
* Поддерживаются типы: `boolean`, `integer`, `float`, `string`, `array`, `object`.
|
|
191
|
+
*
|
|
192
|
+
* Метод использует функцию `settype` для выполнения преобразования.
|
|
193
|
+
*
|
|
194
|
+
* ### Параметры
|
|
195
|
+
*
|
|
196
|
+
* - `type` (string)
|
|
197
|
+
* Тип, к которому необходимо привести значение.
|
|
198
|
+
*
|
|
199
|
+
* ### Возвращаемое значение
|
|
200
|
+
*
|
|
201
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
202
|
+
*
|
|
203
|
+
* ### Примеры использования
|
|
204
|
+
*
|
|
205
|
+
* 1. Преобразование в булевое значение:
|
|
206
|
+
*
|
|
207
|
+
* ```js
|
|
208
|
+
* const valueInstance = new Value('true');
|
|
209
|
+
* const result = valueInstance.setType('boolean');
|
|
210
|
+
* // Результат: новый экземпляр класса Value с значением true
|
|
211
|
+
* ```
|
|
212
|
+
*
|
|
213
|
+
* 2. Преобразование в целое число:
|
|
214
|
+
*
|
|
215
|
+
* ```js
|
|
216
|
+
* const valueInstance = new Value('123');
|
|
217
|
+
* const result = valueInstance.setType('integer');
|
|
218
|
+
* // Результат: новый экземпляр класса Value с значением 123
|
|
219
|
+
* ```
|
|
220
|
+
*
|
|
221
|
+
* 3. Преобразование в число с плавающей точкой:
|
|
222
|
+
*
|
|
223
|
+
* ```js
|
|
224
|
+
* const valueInstance = new Value('123.45');
|
|
225
|
+
* const result = valueInstance.setType('float');
|
|
226
|
+
* // Результат: новый экземпляр класса Value с значением 123.45
|
|
227
|
+
* ```
|
|
228
|
+
*
|
|
229
|
+
* 4. Преобразование в строку:
|
|
230
|
+
*
|
|
231
|
+
* ```js
|
|
232
|
+
* const valueInstance = new Value(123);
|
|
233
|
+
* const result = valueInstance.setType('string');
|
|
234
|
+
* // Результат: новый экземпляр класса Value с значением '123'
|
|
235
|
+
* ```
|
|
236
|
+
*
|
|
237
|
+
* 5. Преобразование в массив:
|
|
238
|
+
*
|
|
239
|
+
* ```js
|
|
240
|
+
* const valueInstance = new Value('example');
|
|
241
|
+
* const result = valueInstance.setType('array');
|
|
242
|
+
* // Результат: новый экземпляр класса Value с значением ['example']
|
|
243
|
+
* ```
|
|
244
|
+
*
|
|
245
|
+
* 6. Преобразование в объект:
|
|
246
|
+
*
|
|
247
|
+
* ```js
|
|
248
|
+
* const valueInstance = new Value('example');
|
|
249
|
+
* const result = valueInstance.setType('object');
|
|
250
|
+
* // Результат: новый экземпляр класса Value с значением { value: 'example' }
|
|
251
|
+
* ```
|
|
252
|
+
*
|
|
253
|
+
* @param {string} type Тип, к которому необходимо привести значение.
|
|
254
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
255
|
+
*/
|
|
256
|
+
setType(type) {
|
|
257
|
+
return new Value(settype(this.#value, type));
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Проверяет, является ли значение, хранящееся в экземпляре класса `Value`, пустым.
|
|
262
|
+
*
|
|
263
|
+
* ### Описание
|
|
264
|
+
*
|
|
265
|
+
* Метод `isEmpty` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, пустым.
|
|
266
|
+
* Пустыми считаются значения `null`, `undefined`, пустая строка, `0`, `false`, пустой массив и пустой объект.
|
|
267
|
+
*
|
|
268
|
+
* Метод использует функцию `empty` для выполнения проверки.
|
|
269
|
+
*
|
|
270
|
+
* ### Возвращаемое значение
|
|
271
|
+
*
|
|
272
|
+
* Возвращает `true`, если значение пустое, и `false` в противном случае.
|
|
273
|
+
*
|
|
274
|
+
* ### Примеры использования
|
|
275
|
+
*
|
|
276
|
+
* 1. Проверка пустых значений:
|
|
277
|
+
*
|
|
278
|
+
* ```js
|
|
279
|
+
* const valueInstance1 = new Value(null);
|
|
280
|
+
* const result1 = valueInstance1.isEmpty();
|
|
281
|
+
* // Результат: true
|
|
282
|
+
*
|
|
283
|
+
* const valueInstance2 = new Value(undefined);
|
|
284
|
+
* const result2 = valueInstance2.isEmpty();
|
|
285
|
+
* // Результат: true
|
|
286
|
+
*
|
|
287
|
+
* const valueInstance3 = new Value('');
|
|
288
|
+
* const result3 = valueInstance3.isEmpty();
|
|
289
|
+
* // Результат: true
|
|
290
|
+
*
|
|
291
|
+
* const valueInstance4 = new Value(0);
|
|
292
|
+
* const result4 = valueInstance4.isEmpty();
|
|
293
|
+
* // Результат: true
|
|
294
|
+
*
|
|
295
|
+
* const valueInstance5 = new Value(false);
|
|
296
|
+
* const result5 = valueInstance5.isEmpty();
|
|
297
|
+
* // Результат: true
|
|
298
|
+
*
|
|
299
|
+
* const valueInstance6 = new Value([]);
|
|
300
|
+
* const result6 = valueInstance6.isEmpty();
|
|
301
|
+
* // Результат: true
|
|
302
|
+
*
|
|
303
|
+
* const valueInstance7 = new Value({});
|
|
304
|
+
* const result7 = valueInstance7.isEmpty();
|
|
305
|
+
* // Результат: true
|
|
306
|
+
* ```
|
|
307
|
+
*
|
|
308
|
+
* 2. Проверка непустых значений:
|
|
309
|
+
*
|
|
310
|
+
* ```js
|
|
311
|
+
* const valueInstance1 = new Value('example');
|
|
312
|
+
* const result1 = valueInstance1.isEmpty();
|
|
313
|
+
* // Результат: false
|
|
314
|
+
*
|
|
315
|
+
* const valueInstance2 = new Value(123);
|
|
316
|
+
* const result2 = valueInstance2.isEmpty();
|
|
317
|
+
* // Результат: false
|
|
318
|
+
*
|
|
319
|
+
* const valueInstance3 = new Value(true);
|
|
320
|
+
* const result3 = valueInstance3.isEmpty();
|
|
321
|
+
* // Результат: false
|
|
322
|
+
*
|
|
323
|
+
* const valueInstance4 = new Value([1, 2, 3]);
|
|
324
|
+
* const result4 = valueInstance4.isEmpty();
|
|
325
|
+
* // Результат: false
|
|
326
|
+
*
|
|
327
|
+
* const valueInstance5 = new Value({ key: 'value' });
|
|
328
|
+
* const result5 = valueInstance5.isEmpty();
|
|
329
|
+
* // Результат: false
|
|
330
|
+
* ```
|
|
331
|
+
*
|
|
332
|
+
* @returns {boolean} Возвращает `true`, если значение пустое, и `false` в противном случае.
|
|
333
|
+
*/
|
|
334
|
+
isEmpty() {
|
|
335
|
+
return this.#getFromStore('isEmpty', () => empty(this.#value));
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Преобразует значение переменной в строку и выводит его на консоль.
|
|
340
|
+
*
|
|
341
|
+
* ### Описание
|
|
342
|
+
*
|
|
343
|
+
* Метод `print` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в строку и вывода его на консоль.
|
|
344
|
+
* Он обрабатывает массивы, объекты, классы, функции, символы и другие типы данных, возвращая их строковое представление.
|
|
345
|
+
*
|
|
346
|
+
* Метод использует функцию `print` для выполнения преобразования и вывода значения на консоль.
|
|
347
|
+
*
|
|
348
|
+
* ### Возвращаемое значение
|
|
349
|
+
*
|
|
350
|
+
* Возвращает текущий экземпляр класса `Value`.
|
|
351
|
+
*
|
|
352
|
+
* ### Примеры использования
|
|
353
|
+
*
|
|
354
|
+
* 1. Преобразование строки:
|
|
355
|
+
*
|
|
356
|
+
* ```js
|
|
357
|
+
* const valueInstance = new Value('example');
|
|
358
|
+
* valueInstance.print();
|
|
359
|
+
* ```
|
|
360
|
+
* Вывод:
|
|
361
|
+
* ```txt
|
|
362
|
+
* "example"
|
|
363
|
+
* ```
|
|
364
|
+
*
|
|
365
|
+
* 2. Преобразование числа:
|
|
366
|
+
*
|
|
367
|
+
* ```js
|
|
368
|
+
* const valueInstance = new Value(123);
|
|
369
|
+
* valueInstance.print();
|
|
370
|
+
* ```
|
|
371
|
+
* Вывод:
|
|
372
|
+
* ```txt
|
|
373
|
+
* 123
|
|
374
|
+
* ```
|
|
375
|
+
*
|
|
376
|
+
* 3. Преобразование булевых значений:
|
|
377
|
+
*
|
|
378
|
+
* ```js
|
|
379
|
+
* const valueInstance = new Value(true);
|
|
380
|
+
* valueInstance.print();
|
|
381
|
+
* ```
|
|
382
|
+
* Вывод:
|
|
383
|
+
* ```txt
|
|
384
|
+
* true
|
|
385
|
+
* ```
|
|
386
|
+
*
|
|
387
|
+
* ```js
|
|
388
|
+
* const valueInstance = new Value(false);
|
|
389
|
+
* valueInstance.print();
|
|
390
|
+
* ```
|
|
391
|
+
* Вывод:
|
|
392
|
+
* ```txt
|
|
393
|
+
* false
|
|
394
|
+
* ```
|
|
395
|
+
*
|
|
396
|
+
* 4. Преобразование null и undefined:
|
|
397
|
+
*
|
|
398
|
+
* ```js
|
|
399
|
+
* const valueInstance = new Value(null);
|
|
400
|
+
* valueInstance.print();
|
|
401
|
+
* ```
|
|
402
|
+
* Вывод:
|
|
403
|
+
* ```txt
|
|
404
|
+
* null
|
|
405
|
+
* ```
|
|
406
|
+
*
|
|
407
|
+
* ```js
|
|
408
|
+
* const valueInstance = new Value(undefined);
|
|
409
|
+
* valueInstance.print();
|
|
410
|
+
* ```
|
|
411
|
+
* Вывод:
|
|
412
|
+
* ```txt
|
|
413
|
+
* undefined
|
|
414
|
+
* ```
|
|
415
|
+
*
|
|
416
|
+
* 5. Преобразование массива:
|
|
417
|
+
*
|
|
418
|
+
* ```js
|
|
419
|
+
* const arr = [1, 2, 3];
|
|
420
|
+
* const valueInstance = new Value(arr);
|
|
421
|
+
* valueInstance.print();
|
|
422
|
+
* ```
|
|
423
|
+
* Вывод:
|
|
424
|
+
* ```txt
|
|
425
|
+
* [
|
|
426
|
+
* 0: 1,
|
|
427
|
+
* 1: 2,
|
|
428
|
+
* 2: 3,
|
|
429
|
+
* ]
|
|
430
|
+
* ```
|
|
431
|
+
*
|
|
432
|
+
* 6. Преобразование ассоциативного массива:
|
|
433
|
+
*
|
|
434
|
+
* ```js
|
|
435
|
+
* const obj = { key: 'value' };
|
|
436
|
+
* const valueInstance = new Value(obj);
|
|
437
|
+
* valueInstance.print();
|
|
438
|
+
* ```
|
|
439
|
+
* Вывод:
|
|
440
|
+
* ```txt
|
|
441
|
+
* {
|
|
442
|
+
* key: "value",
|
|
443
|
+
* }
|
|
444
|
+
* ```
|
|
445
|
+
*
|
|
446
|
+
* 7. Преобразование функции:
|
|
447
|
+
*
|
|
448
|
+
* ```js
|
|
449
|
+
* const func = function() {};
|
|
450
|
+
* const valueInstance = new Value(func);
|
|
451
|
+
* valueInstance.print();
|
|
452
|
+
* ```
|
|
453
|
+
* Вывод:
|
|
454
|
+
* ```txt
|
|
455
|
+
* function func() {}
|
|
456
|
+
* ```
|
|
457
|
+
*
|
|
458
|
+
* 8. Преобразование символа:
|
|
459
|
+
*
|
|
460
|
+
* ```js
|
|
461
|
+
* const symbol = Symbol('example');
|
|
462
|
+
* const valueInstance = new Value(symbol);
|
|
463
|
+
* valueInstance.print();
|
|
464
|
+
* ```
|
|
465
|
+
* Вывод:
|
|
466
|
+
* ```txt
|
|
467
|
+
* Symbol(example)
|
|
468
|
+
* ```
|
|
469
|
+
*
|
|
470
|
+
* @returns {Value} Возвращает текущий экземпляр класса `Value`.
|
|
471
|
+
*/
|
|
472
|
+
print() {
|
|
473
|
+
console.log(this.#getFromStore('print', () => print(this.#value, true)));
|
|
474
|
+
|
|
475
|
+
return this;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Преобразует значение переменной в строку и возвращает новый экземпляр класса `Value` с этим значением.
|
|
480
|
+
*
|
|
481
|
+
* ### Описание
|
|
482
|
+
*
|
|
483
|
+
* Метод `toPrint` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в строку и возвращает новый экземпляр класса `Value` с этим значением.
|
|
484
|
+
* Он обрабатывает массивы, объекты, классы, функции, символы и другие типы данных, возвращая их строковое представление.
|
|
485
|
+
*
|
|
486
|
+
* Метод использует функцию `print` для выполнения преобразования.
|
|
487
|
+
*
|
|
488
|
+
* ### Возвращаемое значение
|
|
489
|
+
*
|
|
490
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
491
|
+
*
|
|
492
|
+
* ### Примеры использования
|
|
493
|
+
*
|
|
494
|
+
* 1. Преобразование строки:
|
|
495
|
+
*
|
|
496
|
+
* ```js
|
|
497
|
+
* const valueInstance = new Value('example');
|
|
498
|
+
* const result = valueInstance.toPrint();
|
|
499
|
+
* // Результат: новый экземпляр класса Value с значением "example"
|
|
500
|
+
* ```
|
|
501
|
+
*
|
|
502
|
+
* 2. Преобразование числа:
|
|
503
|
+
*
|
|
504
|
+
* ```js
|
|
505
|
+
* const valueInstance = new Value(123);
|
|
506
|
+
* const result = valueInstance.toPrint();
|
|
507
|
+
* // Результат: новый экземпляр класса Value с значением 123
|
|
508
|
+
* ```
|
|
509
|
+
*
|
|
510
|
+
* 3. Преобразование булевых значений:
|
|
511
|
+
*
|
|
512
|
+
* ```js
|
|
513
|
+
* const valueInstance = new Value(true);
|
|
514
|
+
* const result = valueInstance.toPrint();
|
|
515
|
+
* // Результат: новый экземпляр класса Value с значением true
|
|
516
|
+
* ```
|
|
517
|
+
*
|
|
518
|
+
* ```js
|
|
519
|
+
* const valueInstance = new Value(false);
|
|
520
|
+
* const result = valueInstance.toPrint();
|
|
521
|
+
* // Результат: новый экземпляр класса Value с значением false
|
|
522
|
+
* ```
|
|
523
|
+
*
|
|
524
|
+
* 4. Преобразование null и undefined:
|
|
525
|
+
*
|
|
526
|
+
* ```js
|
|
527
|
+
* const valueInstance = new Value(null);
|
|
528
|
+
* const result = valueInstance.toPrint();
|
|
529
|
+
* // Результат: новый экземпляр класса Value с значением null
|
|
530
|
+
* ```
|
|
531
|
+
*
|
|
532
|
+
* ```js
|
|
533
|
+
* const valueInstance = new Value(undefined);
|
|
534
|
+
* const result = valueInstance.toPrint();
|
|
535
|
+
* // Результат: новый экземпляр класса Value с значением undefined
|
|
536
|
+
* ```
|
|
537
|
+
*
|
|
538
|
+
* 5. Преобразование массива:
|
|
539
|
+
*
|
|
540
|
+
* ```js
|
|
541
|
+
* const arr = [1, 2, 3];
|
|
542
|
+
* const valueInstance = new Value(arr);
|
|
543
|
+
* const result = valueInstance.toPrint();
|
|
544
|
+
* // Результат: новый экземпляр класса Value с значением [
|
|
545
|
+
* // 0: 1,
|
|
546
|
+
* // 1: 2,
|
|
547
|
+
* // 2: 3,
|
|
548
|
+
* // ]
|
|
549
|
+
* ```
|
|
550
|
+
*
|
|
551
|
+
* 6. Преобразование ассоциативного массива:
|
|
552
|
+
*
|
|
553
|
+
* ```js
|
|
554
|
+
* const obj = { key: 'value' };
|
|
555
|
+
* const valueInstance = new Value(obj);
|
|
556
|
+
* const result = valueInstance.toPrint();
|
|
557
|
+
* // Результат: новый экземпляр класса Value с значением {
|
|
558
|
+
* // key: "value",
|
|
559
|
+
* // }
|
|
560
|
+
* ```
|
|
561
|
+
*
|
|
562
|
+
* 7. Преобразование функции:
|
|
563
|
+
*
|
|
564
|
+
* ```js
|
|
565
|
+
* const func = function() {};
|
|
566
|
+
* const valueInstance = new Value(func);
|
|
567
|
+
* const result = valueInstance.toPrint();
|
|
568
|
+
* // Результат: новый экземпляр класса Value с значением function func() {}
|
|
569
|
+
* ```
|
|
570
|
+
*
|
|
571
|
+
* 8. Преобразование символа:
|
|
572
|
+
*
|
|
573
|
+
* ```js
|
|
574
|
+
* const symbol = Symbol('example');
|
|
575
|
+
* const valueInstance = new Value(symbol);
|
|
576
|
+
* const result = valueInstance.toPrint();
|
|
577
|
+
* // Результат: новый экземпляр класса Value с значением Symbol(example)
|
|
578
|
+
* ```
|
|
579
|
+
*
|
|
580
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
581
|
+
*/
|
|
582
|
+
toPrint() {
|
|
583
|
+
return new Value(this.#getFromStore('print', () => print(this.#value, true)));
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* Преобразует тип значения переменной в строку и выводит его на консоль.
|
|
588
|
+
*
|
|
589
|
+
* ### Описание
|
|
590
|
+
*
|
|
591
|
+
* Метод `printType` используется для преобразования типа значения, хранящегося в экземпляре класса `Value`, в строку и вывода его на консоль.
|
|
592
|
+
* Он обрабатывает массивы, объекты, классы, функции, символы и другие типы данных, возвращая их строковое представление.
|
|
593
|
+
*
|
|
594
|
+
* Метод использует функцию `print_type` для выполнения преобразования и вывода значения на консоль.
|
|
595
|
+
*
|
|
596
|
+
* ### Возвращаемое значение
|
|
597
|
+
*
|
|
598
|
+
* Возвращает текущий экземпляр класса `Value`.
|
|
599
|
+
*
|
|
600
|
+
* ### Примеры использования
|
|
601
|
+
*
|
|
602
|
+
* 1. Преобразование строки:
|
|
603
|
+
*
|
|
604
|
+
* ```js
|
|
605
|
+
* const valueInstance = new Value('example');
|
|
606
|
+
* valueInstance.printType();
|
|
607
|
+
* ```
|
|
608
|
+
* Вывод:
|
|
609
|
+
* ```txt
|
|
610
|
+
* "string"
|
|
611
|
+
* ```
|
|
612
|
+
*
|
|
613
|
+
* 2. Преобразование числа:
|
|
614
|
+
*
|
|
615
|
+
* ```js
|
|
616
|
+
* const valueInstance = new Value(123);
|
|
617
|
+
* valueInstance.printType();
|
|
618
|
+
* ```
|
|
619
|
+
* Вывод:
|
|
620
|
+
* ```txt
|
|
621
|
+
* "integer"
|
|
622
|
+
* ```
|
|
623
|
+
*
|
|
624
|
+
* 3. Преобразование булевых значений:
|
|
625
|
+
*
|
|
626
|
+
* ```js
|
|
627
|
+
* const valueInstance = new Value(true);
|
|
628
|
+
* valueInstance.printType();
|
|
629
|
+
* ```
|
|
630
|
+
* Вывод:
|
|
631
|
+
* ```txt
|
|
632
|
+
* "boolean"
|
|
633
|
+
* ```
|
|
634
|
+
*
|
|
635
|
+
* ```js
|
|
636
|
+
* const valueInstance = new Value(false);
|
|
637
|
+
* valueInstance.printType();
|
|
638
|
+
* ```
|
|
639
|
+
* Вывод:
|
|
640
|
+
* ```txt
|
|
641
|
+
* "boolean"
|
|
642
|
+
* ```
|
|
643
|
+
*
|
|
644
|
+
* 4. Преобразование null и undefined:
|
|
645
|
+
*
|
|
646
|
+
* ```js
|
|
647
|
+
* const valueInstance = new Value(null);
|
|
648
|
+
* valueInstance.printType();
|
|
649
|
+
* ```
|
|
650
|
+
* Вывод:
|
|
651
|
+
* ```txt
|
|
652
|
+
* "null"
|
|
653
|
+
* ```
|
|
654
|
+
*
|
|
655
|
+
* ```js
|
|
656
|
+
* const valueInstance = new Value(undefined);
|
|
657
|
+
* valueInstance.printType();
|
|
658
|
+
* ```
|
|
659
|
+
* Вывод:
|
|
660
|
+
* ```txt
|
|
661
|
+
* "undefined"
|
|
662
|
+
* ```
|
|
663
|
+
*
|
|
664
|
+
* 5. Преобразование массива:
|
|
665
|
+
*
|
|
666
|
+
* ```js
|
|
667
|
+
* const arr = [1, 2, 3];
|
|
668
|
+
* const valueInstance = new Value(arr);
|
|
669
|
+
* valueInstance.printType();
|
|
670
|
+
* ```
|
|
671
|
+
* Вывод:
|
|
672
|
+
* ```txt
|
|
673
|
+
* "array"
|
|
674
|
+
* ```
|
|
675
|
+
*
|
|
676
|
+
* 6. Преобразование ассоциативного массива:
|
|
677
|
+
*
|
|
678
|
+
* ```js
|
|
679
|
+
* const obj = { key: 'value' };
|
|
680
|
+
* const valueInstance = new Value(obj);
|
|
681
|
+
* valueInstance.printType();
|
|
682
|
+
* ```
|
|
683
|
+
* Вывод:
|
|
684
|
+
* ```txt
|
|
685
|
+
* "object"
|
|
686
|
+
* ```
|
|
687
|
+
*
|
|
688
|
+
* 7. Преобразование функции:
|
|
689
|
+
*
|
|
690
|
+
* ```js
|
|
691
|
+
* const func = function() {};
|
|
692
|
+
* const valueInstance = new Value(func);
|
|
693
|
+
* valueInstance.printType();
|
|
694
|
+
* ```
|
|
695
|
+
* Вывод:
|
|
696
|
+
* ```txt
|
|
697
|
+
* "function"
|
|
698
|
+
* ```
|
|
699
|
+
*
|
|
700
|
+
* 8. Преобразование символа:
|
|
701
|
+
*
|
|
702
|
+
* ```js
|
|
703
|
+
* const symbol = Symbol('example');
|
|
704
|
+
* const valueInstance = new Value(symbol);
|
|
705
|
+
* valueInstance.printType();
|
|
706
|
+
* ```
|
|
707
|
+
* Вывод:
|
|
708
|
+
* ```txt
|
|
709
|
+
* "symbol"
|
|
710
|
+
* ```
|
|
711
|
+
*
|
|
712
|
+
* @returns {Value} Возвращает текущий экземпляр класса `Value`.
|
|
713
|
+
*/
|
|
714
|
+
printType() {
|
|
715
|
+
console.log(this.#getFromStore('printType', () => print_type(this.#value, true)));
|
|
716
|
+
|
|
717
|
+
return this;
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
/**
|
|
721
|
+
* Преобразует тип значения переменной в строку и возвращает новый экземпляр класса `Value` с этим значением.
|
|
722
|
+
*
|
|
723
|
+
* ### Описание
|
|
724
|
+
*
|
|
725
|
+
* Метод `toPrintType` используется для преобразования типа значения, хранящегося в экземпляре класса `Value`, в строку и возвращает новый экземпляр класса `Value` с этим значением.
|
|
726
|
+
* Он обрабатывает массивы, объекты, классы, функции, символы и другие типы данных, возвращая их строковое представление.
|
|
727
|
+
*
|
|
728
|
+
* Метод использует функцию `print_type` для выполнения преобразования.
|
|
729
|
+
*
|
|
730
|
+
* ### Возвращаемое значение
|
|
731
|
+
*
|
|
732
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
733
|
+
*
|
|
734
|
+
* ### Примеры использования
|
|
735
|
+
*
|
|
736
|
+
* 1. Преобразование строки:
|
|
737
|
+
*
|
|
738
|
+
* ```js
|
|
739
|
+
* const valueInstance = new Value('example');
|
|
740
|
+
* const result = valueInstance.toPrintType();
|
|
741
|
+
* // Результат: новый экземпляр класса Value с значением "string"
|
|
742
|
+
* ```
|
|
743
|
+
*
|
|
744
|
+
* 2. Преобразование числа:
|
|
745
|
+
*
|
|
746
|
+
* ```js
|
|
747
|
+
* const valueInstance = new Value(123);
|
|
748
|
+
* const result = valueInstance.toPrintType();
|
|
749
|
+
* // Результат: новый экземпляр класса Value с значением "integer"
|
|
750
|
+
* ```
|
|
751
|
+
*
|
|
752
|
+
* 3. Преобразование булевых значений:
|
|
753
|
+
*
|
|
754
|
+
* ```js
|
|
755
|
+
* const valueInstance = new Value(true);
|
|
756
|
+
* const result = valueInstance.toPrintType();
|
|
757
|
+
* // Результат: новый экземпляр класса Value с значением "boolean"
|
|
758
|
+
* ```
|
|
759
|
+
*
|
|
760
|
+
* ```js
|
|
761
|
+
* const valueInstance = new Value(false);
|
|
762
|
+
* const result = valueInstance.toPrintType();
|
|
763
|
+
* // Результат: новый экземпляр класса Value с значением "boolean"
|
|
764
|
+
* ```
|
|
765
|
+
*
|
|
766
|
+
* 4. Преобразование null и undefined:
|
|
767
|
+
*
|
|
768
|
+
* ```js
|
|
769
|
+
* const valueInstance = new Value(null);
|
|
770
|
+
* const result = valueInstance.toPrintType();
|
|
771
|
+
* // Результат: новый экземпляр класса Value с значением "null"
|
|
772
|
+
* ```
|
|
773
|
+
*
|
|
774
|
+
* ```js
|
|
775
|
+
* const valueInstance = new Value(undefined);
|
|
776
|
+
* const result = valueInstance.toPrintType();
|
|
777
|
+
* // Результат: новый экземпляр класса Value с значением "undefined"
|
|
778
|
+
* ```
|
|
779
|
+
*
|
|
780
|
+
* 5. Преобразование массива:
|
|
781
|
+
*
|
|
782
|
+
* ```js
|
|
783
|
+
* const arr = [1, 2, 3];
|
|
784
|
+
* const valueInstance = new Value(arr);
|
|
785
|
+
* const result = valueInstance.toPrintType();
|
|
786
|
+
* // Результат: новый экземпляр класса Value с значением "array"
|
|
787
|
+
* ```
|
|
788
|
+
*
|
|
789
|
+
* 6. Преобразование ассоциативного массива:
|
|
790
|
+
*
|
|
791
|
+
* ```js
|
|
792
|
+
* const obj = { key: 'value' };
|
|
793
|
+
* const valueInstance = new Value(obj);
|
|
794
|
+
* const result = valueInstance.toPrintType();
|
|
795
|
+
* // Результат: новый экземпляр класса Value с значением "object"
|
|
796
|
+
* ```
|
|
797
|
+
*
|
|
798
|
+
* 7. Преобразование функции:
|
|
799
|
+
*
|
|
800
|
+
* ```js
|
|
801
|
+
* const func = function() {};
|
|
802
|
+
* const valueInstance = new Value(func);
|
|
803
|
+
* const result = valueInstance.toPrintType();
|
|
804
|
+
* // Результат: новый экземпляр класса Value с значением "function"
|
|
805
|
+
* ```
|
|
806
|
+
*
|
|
807
|
+
* 8. Преобразование символа:
|
|
808
|
+
*
|
|
809
|
+
* ```js
|
|
810
|
+
* const symbol = Symbol('example');
|
|
811
|
+
* const valueInstance = new Value(symbol);
|
|
812
|
+
* const result = valueInstance.toPrintType();
|
|
813
|
+
* // Результат: новый экземпляр класса Value с значением "symbol"
|
|
814
|
+
* ```
|
|
815
|
+
*
|
|
816
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
817
|
+
*/
|
|
818
|
+
toPrintType() {
|
|
819
|
+
return new Value(this.#getFromStore('printType', () => print_type(this.#value, true)));
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/**
|
|
823
|
+
* Проверяет, является ли значение массивом.
|
|
824
|
+
*
|
|
825
|
+
* ### Описание
|
|
826
|
+
*
|
|
827
|
+
* Метод `isArray` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, массивом.
|
|
828
|
+
* Массивом считается значение, которое является экземпляром класса `Array`.
|
|
829
|
+
*
|
|
830
|
+
* Метод использует функцию `is_array` для выполнения проверки.
|
|
831
|
+
*
|
|
832
|
+
* ### Возвращаемое значение
|
|
833
|
+
*
|
|
834
|
+
* Возвращает `true`, если значение является массивом, и `false` в противном случае.
|
|
835
|
+
*
|
|
836
|
+
* ### Примеры использования
|
|
837
|
+
*
|
|
838
|
+
* 1. Проверка массива:
|
|
839
|
+
*
|
|
840
|
+
* ```js
|
|
841
|
+
* const valueInstance = new Value([1, 2, 3]);
|
|
842
|
+
* const result = valueInstance.isArray();
|
|
843
|
+
* // Результат: true
|
|
844
|
+
* ```
|
|
845
|
+
*
|
|
846
|
+
* 2. Проверка объекта:
|
|
847
|
+
*
|
|
848
|
+
* ```js
|
|
849
|
+
* const valueInstance = new Value({ key: 'value' });
|
|
850
|
+
* const result = valueInstance.isArray();
|
|
851
|
+
* // Результат: false
|
|
852
|
+
* ```
|
|
853
|
+
*
|
|
854
|
+
* 3. Проверка строки:
|
|
855
|
+
*
|
|
856
|
+
* ```js
|
|
857
|
+
* const valueInstance = new Value('example');
|
|
858
|
+
* const result = valueInstance.isArray();
|
|
859
|
+
* // Результат: false
|
|
860
|
+
* ```
|
|
861
|
+
*
|
|
862
|
+
* 4. Проверка числа:
|
|
863
|
+
*
|
|
864
|
+
* ```js
|
|
865
|
+
* const valueInstance = new Value(123);
|
|
866
|
+
* const result = valueInstance.isArray();
|
|
867
|
+
* // Результат: false
|
|
868
|
+
* ```
|
|
869
|
+
*
|
|
870
|
+
* 5. Проверка булевого значения:
|
|
871
|
+
*
|
|
872
|
+
* ```js
|
|
873
|
+
* const valueInstance = new Value(true);
|
|
874
|
+
* const result = valueInstance.isArray();
|
|
875
|
+
* // Результат: false
|
|
876
|
+
* ```
|
|
877
|
+
*
|
|
878
|
+
* @returns {boolean} Возвращает `true`, если значение является массивом, и `false` в противном случае.
|
|
879
|
+
*/
|
|
880
|
+
isArray() {
|
|
881
|
+
return this.#getFromStore('isArray', () => is_array(this.#value));
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
/**
|
|
885
|
+
* Проверяет, является ли значение ассоциативным массивом.
|
|
886
|
+
*
|
|
887
|
+
* ### Описание
|
|
888
|
+
*
|
|
889
|
+
* Метод `isAssoc` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, ассоциативным массивом.
|
|
890
|
+
* Ассоциативным массивом считается объект, который не является массивом и не является `null`.
|
|
891
|
+
*
|
|
892
|
+
* Метод использует функцию `is_assoc` для выполнения проверки.
|
|
893
|
+
*
|
|
894
|
+
* ### Возвращаемое значение
|
|
895
|
+
*
|
|
896
|
+
* Возвращает `true`, если значение является ассоциативным массивом, и `false` в противном случае.
|
|
897
|
+
*
|
|
898
|
+
* ### Примеры использования
|
|
899
|
+
*
|
|
900
|
+
* 1. Проверка ассоциативного массива:
|
|
901
|
+
*
|
|
902
|
+
* ```js
|
|
903
|
+
* const valueInstance = new Value({ key: 'value' });
|
|
904
|
+
* const result = valueInstance.isAssoc();
|
|
905
|
+
* // Результат: true
|
|
906
|
+
* ```
|
|
907
|
+
*
|
|
908
|
+
* 2. Проверка массива:
|
|
909
|
+
*
|
|
910
|
+
* ```js
|
|
911
|
+
* const valueInstance = new Value([1, 2, 3]);
|
|
912
|
+
* const result = valueInstance.isAssoc();
|
|
913
|
+
* // Результат: false
|
|
914
|
+
* ```
|
|
915
|
+
*
|
|
916
|
+
* 3. Проверка null:
|
|
917
|
+
*
|
|
918
|
+
* ```js
|
|
919
|
+
* const valueInstance = new Value(null);
|
|
920
|
+
* const result = valueInstance.isAssoc();
|
|
921
|
+
* // Результат: false
|
|
922
|
+
* ```
|
|
923
|
+
*
|
|
924
|
+
* @returns {boolean} Возвращает `true`, если значение является ассоциативным массивом, и `false` в противном случае.
|
|
925
|
+
*/
|
|
926
|
+
isAssoc() {
|
|
927
|
+
return this.#getFromStore('isAssoc', () => is_assoc(this.#value));
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
/**
|
|
931
|
+
* Проверяет, является ли значение типом BigInt.
|
|
932
|
+
*
|
|
933
|
+
* ### Описание
|
|
934
|
+
*
|
|
935
|
+
* Метод `isBigInt` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, типом BigInt.
|
|
936
|
+
* BigInt - это встроенный тип данных в JavaScript, который используется для представления целых чисел произвольной длины.
|
|
937
|
+
*
|
|
938
|
+
* Метод использует функцию `is_bigint` для выполнения проверки.
|
|
939
|
+
*
|
|
940
|
+
* ### Возвращаемое значение
|
|
941
|
+
*
|
|
942
|
+
* Возвращает `true`, если значение является типом BigInt, и `false` в противном случае.
|
|
943
|
+
*
|
|
944
|
+
* ### Примеры использования
|
|
945
|
+
*
|
|
946
|
+
* 1. Проверка значения типа BigInt:
|
|
947
|
+
*
|
|
948
|
+
* ```js
|
|
949
|
+
* const valueInstance = new Value(123n);
|
|
950
|
+
* const result = valueInstance.isBigInt();
|
|
951
|
+
* // Результат: true
|
|
952
|
+
* ```
|
|
953
|
+
*
|
|
954
|
+
* 2. Проверка значения типа Number:
|
|
955
|
+
*
|
|
956
|
+
* ```js
|
|
957
|
+
* const valueInstance = new Value(123);
|
|
958
|
+
* const result = valueInstance.isBigInt();
|
|
959
|
+
* // Результат: false
|
|
960
|
+
* ```
|
|
961
|
+
*
|
|
962
|
+
* 3. Проверка строки:
|
|
963
|
+
*
|
|
964
|
+
* ```js
|
|
965
|
+
* const valueInstance = new Value('123');
|
|
966
|
+
* const result = valueInstance.isBigInt();
|
|
967
|
+
* // Результат: false
|
|
968
|
+
* ```
|
|
969
|
+
*
|
|
970
|
+
* @returns {boolean} Возвращает `true`, если значение является типом BigInt, и `false` в противном случае.
|
|
971
|
+
*/
|
|
972
|
+
isBigInt() {
|
|
973
|
+
return this.#getFromStore('isBigInt', () => is_bigint(this.#value));
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
/**
|
|
977
|
+
* Проверяет, является ли значение логическим (булевым).
|
|
978
|
+
*
|
|
979
|
+
* ### Описание
|
|
980
|
+
*
|
|
981
|
+
* Метод `isBool` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, логическим (булевым).
|
|
982
|
+
* Логическим значением считается значение, которое является `true` или `false`.
|
|
983
|
+
*
|
|
984
|
+
* Метод использует функцию `is_bool` для выполнения проверки.
|
|
985
|
+
*
|
|
986
|
+
* ### Возвращаемое значение
|
|
987
|
+
*
|
|
988
|
+
* Возвращает `true`, если значение является логическим, и `false` в противном случае.
|
|
989
|
+
*
|
|
990
|
+
* ### Примеры использования
|
|
991
|
+
*
|
|
992
|
+
* 1. Проверка значения `true`:
|
|
993
|
+
*
|
|
994
|
+
* ```js
|
|
995
|
+
* const valueInstance = new Value(true);
|
|
996
|
+
* const result = valueInstance.isBool();
|
|
997
|
+
* // Результат: true
|
|
998
|
+
* ```
|
|
999
|
+
*
|
|
1000
|
+
* 2. Проверка значения `false`:
|
|
1001
|
+
*
|
|
1002
|
+
* ```js
|
|
1003
|
+
* const valueInstance = new Value(false);
|
|
1004
|
+
* const result = valueInstance.isBool();
|
|
1005
|
+
* // Результат: true
|
|
1006
|
+
* ```
|
|
1007
|
+
*
|
|
1008
|
+
* 3. Проверка строки:
|
|
1009
|
+
*
|
|
1010
|
+
* ```js
|
|
1011
|
+
* const valueInstance = new Value('true');
|
|
1012
|
+
* const result = valueInstance.isBool();
|
|
1013
|
+
* // Результат: false
|
|
1014
|
+
* ```
|
|
1015
|
+
*
|
|
1016
|
+
* 4. Проверка числа:
|
|
1017
|
+
*
|
|
1018
|
+
* ```js
|
|
1019
|
+
* const valueInstance = new Value(1);
|
|
1020
|
+
* const result = valueInstance.isBool();
|
|
1021
|
+
* // Результат: false
|
|
1022
|
+
* ```
|
|
1023
|
+
*
|
|
1024
|
+
* @returns {boolean} Возвращает `true`, если значение является логическим, и `false` в противном случае.
|
|
1025
|
+
*/
|
|
1026
|
+
isBool() {
|
|
1027
|
+
return this.#getFromStore('isBool', () => is_bool(this.#value));
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
/**
|
|
1031
|
+
* Проверяет, является ли значение логическим (булевым).
|
|
1032
|
+
*
|
|
1033
|
+
* ### Описание
|
|
1034
|
+
*
|
|
1035
|
+
* Метод `isBoolean` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, логическим (булевым).
|
|
1036
|
+
* Логическим значением считается значение, которое является `true` или `false`.
|
|
1037
|
+
*
|
|
1038
|
+
* Метод использует функцию `is_bool` для выполнения проверки.
|
|
1039
|
+
*
|
|
1040
|
+
* ### Возвращаемое значение
|
|
1041
|
+
*
|
|
1042
|
+
* Возвращает `true`, если значение является логическим, и `false` в противном случае.
|
|
1043
|
+
*
|
|
1044
|
+
* ### Примеры использования
|
|
1045
|
+
*
|
|
1046
|
+
* 1. Проверка значения `true`:
|
|
1047
|
+
*
|
|
1048
|
+
* ```js
|
|
1049
|
+
* const valueInstance = new Value(true);
|
|
1050
|
+
* const result = valueInstance.isBoolean();
|
|
1051
|
+
* // Результат: true
|
|
1052
|
+
* ```
|
|
1053
|
+
*
|
|
1054
|
+
* 2. Проверка значения `false`:
|
|
1055
|
+
*
|
|
1056
|
+
* ```js
|
|
1057
|
+
* const valueInstance = new Value(false);
|
|
1058
|
+
* const result = valueInstance.isBoolean();
|
|
1059
|
+
* // Результат: true
|
|
1060
|
+
* ```
|
|
1061
|
+
*
|
|
1062
|
+
* 3. Проверка строки:
|
|
1063
|
+
*
|
|
1064
|
+
* ```js
|
|
1065
|
+
* const valueInstance = new Value('true');
|
|
1066
|
+
* const result = valueInstance.isBoolean();
|
|
1067
|
+
* // Результат: false
|
|
1068
|
+
* ```
|
|
1069
|
+
*
|
|
1070
|
+
* 4. Проверка числа:
|
|
1071
|
+
*
|
|
1072
|
+
* ```js
|
|
1073
|
+
* const valueInstance = new Value(1);
|
|
1074
|
+
* const result = valueInstance.isBoolean();
|
|
1075
|
+
* // Результат: false
|
|
1076
|
+
* ```
|
|
1077
|
+
*
|
|
1078
|
+
* @returns {boolean} Возвращает `true`, если значение является логическим, и `false` в противном случае.
|
|
1079
|
+
*/
|
|
1080
|
+
isBoolean() {
|
|
1081
|
+
return this.#getFromStore('isBool', () => is_bool(this.#value));
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
/**
|
|
1085
|
+
* Проверяет, является ли значение классом.
|
|
1086
|
+
*
|
|
1087
|
+
* ### Описание
|
|
1088
|
+
*
|
|
1089
|
+
* Метод `isClass` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, классом.
|
|
1090
|
+
* Классом считается значение, которое является функцией и имеет свойство `prototype`, являющееся объектом.
|
|
1091
|
+
*
|
|
1092
|
+
* Метод использует функцию `is_class` для выполнения проверки.
|
|
1093
|
+
*
|
|
1094
|
+
* ### Возвращаемое значение
|
|
1095
|
+
*
|
|
1096
|
+
* Возвращает `true`, если значение является классом, и `false` в противном случае.
|
|
1097
|
+
*
|
|
1098
|
+
* ### Примеры использования
|
|
1099
|
+
*
|
|
1100
|
+
* 1. Проверка класса:
|
|
1101
|
+
*
|
|
1102
|
+
* ```js
|
|
1103
|
+
* class MyClass {}
|
|
1104
|
+
* const valueInstance = new Value(MyClass);
|
|
1105
|
+
* const result = valueInstance.isClass();
|
|
1106
|
+
* // Результат: true
|
|
1107
|
+
* ```
|
|
1108
|
+
*
|
|
1109
|
+
* 2. Проверка функции:
|
|
1110
|
+
*
|
|
1111
|
+
* ```js
|
|
1112
|
+
* const myFunction = function() {};
|
|
1113
|
+
* const valueInstance = new Value(myFunction);
|
|
1114
|
+
* const result = valueInstance.isClass();
|
|
1115
|
+
* // Результат: false
|
|
1116
|
+
* ```
|
|
1117
|
+
*
|
|
1118
|
+
* 3. Проверка объекта:
|
|
1119
|
+
*
|
|
1120
|
+
* ```js
|
|
1121
|
+
* const myObject = {};
|
|
1122
|
+
* const valueInstance = new Value(myObject);
|
|
1123
|
+
* const result = valueInstance.isClass();
|
|
1124
|
+
* // Результат: false
|
|
1125
|
+
* ```
|
|
1126
|
+
*
|
|
1127
|
+
* @returns {boolean} Возвращает `true`, если значение является классом, и `false` в противном случае.
|
|
1128
|
+
*/
|
|
1129
|
+
isClass() {
|
|
1130
|
+
return this.#getFromStore('isClass', () => is_class(this.#value));
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
/**
|
|
1134
|
+
* Проверяет, является ли значение числом с плавающей точкой.
|
|
1135
|
+
*
|
|
1136
|
+
* ### Описание
|
|
1137
|
+
*
|
|
1138
|
+
* Метод `isFloat` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, числом с плавающей точкой.
|
|
1139
|
+
* Числом с плавающей точкой считается значение, которое является числом и не является целым числом.
|
|
1140
|
+
*
|
|
1141
|
+
* Метод использует функцию `is_float` для выполнения проверки.
|
|
1142
|
+
*
|
|
1143
|
+
* ### Возвращаемое значение
|
|
1144
|
+
*
|
|
1145
|
+
* Возвращает `true`, если значение является числом с плавающей точкой, и `false` в противном случае.
|
|
1146
|
+
*
|
|
1147
|
+
* ### Примеры использования
|
|
1148
|
+
*
|
|
1149
|
+
* 1. Проверка числа с плавающей точкой:
|
|
1150
|
+
*
|
|
1151
|
+
* ```js
|
|
1152
|
+
* const valueInstance = new Value(123.45);
|
|
1153
|
+
* const result = valueInstance.isFloat();
|
|
1154
|
+
* // Результат: true
|
|
1155
|
+
* ```
|
|
1156
|
+
*
|
|
1157
|
+
* 2. Проверка целого числа:
|
|
1158
|
+
*
|
|
1159
|
+
* ```js
|
|
1160
|
+
* const valueInstance = new Value(123);
|
|
1161
|
+
* const result = valueInstance.isFloat();
|
|
1162
|
+
* // Результат: false
|
|
1163
|
+
* ```
|
|
1164
|
+
*
|
|
1165
|
+
* 3. Проверка строки:
|
|
1166
|
+
*
|
|
1167
|
+
* ```js
|
|
1168
|
+
* const valueInstance = new Value('123.45');
|
|
1169
|
+
* const result = valueInstance.isFloat();
|
|
1170
|
+
* // Результат: false
|
|
1171
|
+
* ```
|
|
1172
|
+
*
|
|
1173
|
+
* @returns {boolean} Возвращает `true`, если значение является числом с плавающей точкой, и `false` в противном случае.
|
|
1174
|
+
*/
|
|
1175
|
+
isFloat() {
|
|
1176
|
+
return this.#getFromStore('isFloat', () => is_float(this.#value));
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
/**
|
|
1180
|
+
* Проверяет, является ли значение функцией.
|
|
1181
|
+
*
|
|
1182
|
+
* ### Описание
|
|
1183
|
+
*
|
|
1184
|
+
* Метод `isFunction` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, функцией.
|
|
1185
|
+
* Функцией считается значение, которое является экземпляром класса `Function`.
|
|
1186
|
+
*
|
|
1187
|
+
* Метод использует функцию `is_function` для выполнения проверки.
|
|
1188
|
+
*
|
|
1189
|
+
* ### Возвращаемое значение
|
|
1190
|
+
*
|
|
1191
|
+
* Возвращает `true`, если значение является функцией, и `false` в противном случае.
|
|
1192
|
+
*
|
|
1193
|
+
* ### Примеры использования
|
|
1194
|
+
*
|
|
1195
|
+
* 1. Проверка функции:
|
|
1196
|
+
*
|
|
1197
|
+
* ```js
|
|
1198
|
+
* const valueInstance = new Value(function() {});
|
|
1199
|
+
* const result = valueInstance.isFunction();
|
|
1200
|
+
* // Результат: true
|
|
1201
|
+
* ```
|
|
1202
|
+
*
|
|
1203
|
+
* 2. Проверка стрелочной функции:
|
|
1204
|
+
*
|
|
1205
|
+
* ```js
|
|
1206
|
+
* const valueInstance = new Value(() => {});
|
|
1207
|
+
* const result = valueInstance.isFunction();
|
|
1208
|
+
* // Результат: true
|
|
1209
|
+
* ```
|
|
1210
|
+
*
|
|
1211
|
+
* 3. Проверка класса:
|
|
1212
|
+
*
|
|
1213
|
+
* ```js
|
|
1214
|
+
* class MyClass {}
|
|
1215
|
+
* const valueInstance = new Value(MyClass);
|
|
1216
|
+
* const result = valueInstance.isFunction();
|
|
1217
|
+
* // Результат: false
|
|
1218
|
+
* ```
|
|
1219
|
+
*
|
|
1220
|
+
* 4. Проверка объекта:
|
|
1221
|
+
*
|
|
1222
|
+
* ```js
|
|
1223
|
+
* const valueInstance = new Value({});
|
|
1224
|
+
* const result = valueInstance.isFunction();
|
|
1225
|
+
* // Результат: false
|
|
1226
|
+
* ```
|
|
1227
|
+
*
|
|
1228
|
+
* @returns {boolean} Возвращает `true`, если значение является функцией, и `false` в противном случае.
|
|
1229
|
+
*/
|
|
1230
|
+
isFunction() {
|
|
1231
|
+
return this.#getFromStore('isFunction', () => is_function(this.#value));
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
/**
|
|
1235
|
+
* Проверяет, является ли значение бесконечностью.
|
|
1236
|
+
*
|
|
1237
|
+
* ### Описание
|
|
1238
|
+
*
|
|
1239
|
+
* Метод `isInfinity` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, бесконечностью.
|
|
1240
|
+
* Значение считается бесконечностью, если оно равно `Infinity` или `-Infinity`.
|
|
1241
|
+
*
|
|
1242
|
+
* Метод использует функцию `is_infinity` для выполнения проверки.
|
|
1243
|
+
*
|
|
1244
|
+
* ### Возвращаемое значение
|
|
1245
|
+
*
|
|
1246
|
+
* Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
|
|
1247
|
+
*
|
|
1248
|
+
* ### Примеры использования
|
|
1249
|
+
*
|
|
1250
|
+
* 1. Проверка значения `Infinity`:
|
|
1251
|
+
*
|
|
1252
|
+
* ```js
|
|
1253
|
+
* const valueInstance = new Value(Infinity);
|
|
1254
|
+
* const result = valueInstance.isInfinity();
|
|
1255
|
+
* // Результат: true
|
|
1256
|
+
* ```
|
|
1257
|
+
*
|
|
1258
|
+
* 2. Проверка значения `-Infinity`:
|
|
1259
|
+
*
|
|
1260
|
+
* ```js
|
|
1261
|
+
* const valueInstance = new Value(-Infinity);
|
|
1262
|
+
* const result = valueInstance.isInfinity();
|
|
1263
|
+
* // Результат: true
|
|
1264
|
+
* ```
|
|
1265
|
+
*
|
|
1266
|
+
* 3. Проверка значения `123`:
|
|
1267
|
+
*
|
|
1268
|
+
* ```js
|
|
1269
|
+
* const valueInstance = new Value(123);
|
|
1270
|
+
* const result = valueInstance.isInfinity();
|
|
1271
|
+
* // Результат: false
|
|
1272
|
+
* ```
|
|
1273
|
+
*
|
|
1274
|
+
* 4. Проверка значения `NaN`:
|
|
1275
|
+
*
|
|
1276
|
+
* ```js
|
|
1277
|
+
* const valueInstance = new Value(NaN);
|
|
1278
|
+
* const result = valueInstance.isInfinity();
|
|
1279
|
+
* // Результат: false
|
|
1280
|
+
* ```
|
|
1281
|
+
*
|
|
1282
|
+
* @returns {boolean} Возвращает `true`, если значение является бесконечностью, и `false` в противном случае.
|
|
1283
|
+
*/
|
|
1284
|
+
isInfinity() {
|
|
1285
|
+
return this.#getFromStore('isInfinity', () => is_infinity(this.#value));
|
|
1286
|
+
}
|
|
1287
|
+
|
|
1288
|
+
/**
|
|
1289
|
+
* Проверяет, является ли значение целым числом.
|
|
1290
|
+
*
|
|
1291
|
+
* ### Описание
|
|
1292
|
+
*
|
|
1293
|
+
* Метод `isInt` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, целым числом.
|
|
1294
|
+
* Целым числом считается значение, которое имеет тип `number`, является конечным и не имеет дробной части.
|
|
1295
|
+
*
|
|
1296
|
+
* Метод использует функцию `is_int` для выполнения проверки.
|
|
1297
|
+
*
|
|
1298
|
+
* ### Возвращаемое значение
|
|
1299
|
+
*
|
|
1300
|
+
* Возвращает `true`, если значение является целым числом, и `false` в противном случае.
|
|
1301
|
+
*
|
|
1302
|
+
* ### Примеры использования
|
|
1303
|
+
*
|
|
1304
|
+
* 1. Проверка целого числа:
|
|
1305
|
+
*
|
|
1306
|
+
* ```js
|
|
1307
|
+
* const valueInstance = new Value(123);
|
|
1308
|
+
* const result = valueInstance.isInt();
|
|
1309
|
+
* // Результат: true
|
|
1310
|
+
* ```
|
|
1311
|
+
*
|
|
1312
|
+
* 2. Проверка числа с плавающей точкой:
|
|
1313
|
+
*
|
|
1314
|
+
* ```js
|
|
1315
|
+
* const valueInstance = new Value(123.45);
|
|
1316
|
+
* const result = valueInstance.isInt();
|
|
1317
|
+
* // Результат: false
|
|
1318
|
+
* ```
|
|
1319
|
+
*
|
|
1320
|
+
* 3. Проверка строки:
|
|
1321
|
+
*
|
|
1322
|
+
* ```js
|
|
1323
|
+
* const valueInstance = new Value('123');
|
|
1324
|
+
* const result = valueInstance.isInt();
|
|
1325
|
+
* // Результат: false
|
|
1326
|
+
* ```
|
|
1327
|
+
*
|
|
1328
|
+
* @returns {boolean} Возвращает `true`, если значение является целым числом, и `false` в противном случае.
|
|
1329
|
+
*/
|
|
1330
|
+
isInt() {
|
|
1331
|
+
return this.#getFromStore('isInt', () => is_int(this.#value));
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
/**
|
|
1335
|
+
* Проверяет, является ли значение целым числом.
|
|
1336
|
+
*
|
|
1337
|
+
* ### Описание
|
|
1338
|
+
*
|
|
1339
|
+
* Метод `isInteger` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, целым числом.
|
|
1340
|
+
* Целым числом считается значение, которое имеет тип `number`, является конечным и не имеет дробной части.
|
|
1341
|
+
*
|
|
1342
|
+
* Метод использует функцию `is_int` для выполнения проверки.
|
|
1343
|
+
*
|
|
1344
|
+
* ### Возвращаемое значение
|
|
1345
|
+
*
|
|
1346
|
+
* Возвращает `true`, если значение является целым числом, и `false` в противном случае.
|
|
1347
|
+
*
|
|
1348
|
+
* ### Примеры использования
|
|
1349
|
+
*
|
|
1350
|
+
* 1. Проверка целого числа:
|
|
1351
|
+
*
|
|
1352
|
+
* ```js
|
|
1353
|
+
* const valueInstance = new Value(123);
|
|
1354
|
+
* const result = valueInstance.isInteger();
|
|
1355
|
+
* // Результат: true
|
|
1356
|
+
* ```
|
|
1357
|
+
*
|
|
1358
|
+
* 2. Проверка числа с плавающей точкой:
|
|
1359
|
+
*
|
|
1360
|
+
* ```js
|
|
1361
|
+
* const valueInstance = new Value(123.45);
|
|
1362
|
+
* const result = valueInstance.isInteger();
|
|
1363
|
+
* // Результат: false
|
|
1364
|
+
* ```
|
|
1365
|
+
*
|
|
1366
|
+
* 3. Проверка строки:
|
|
1367
|
+
*
|
|
1368
|
+
* ```js
|
|
1369
|
+
* const valueInstance = new Value('123');
|
|
1370
|
+
* const result = valueInstance.isInteger();
|
|
1371
|
+
* // Результат: false
|
|
1372
|
+
* ```
|
|
1373
|
+
*
|
|
1374
|
+
* @returns {boolean} Возвращает `true`, если значение является целым числом, и `false` в противном случае.
|
|
1375
|
+
*/
|
|
1376
|
+
isInteger() {
|
|
1377
|
+
return this.#getFromStore('isInt', () => is_int(this.#value));
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
/**
|
|
1381
|
+
* Проверяет, является ли значение списком.
|
|
1382
|
+
*
|
|
1383
|
+
* ### Описание
|
|
1384
|
+
*
|
|
1385
|
+
* Метод `isList` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, списком.
|
|
1386
|
+
* Списком считается значение, которое является массивом.
|
|
1387
|
+
*
|
|
1388
|
+
* Метод использует функцию `is_list` для выполнения проверки.
|
|
1389
|
+
*
|
|
1390
|
+
* ### Возвращаемое значение
|
|
1391
|
+
*
|
|
1392
|
+
* Возвращает `true`, если значение является списком, и `false` в противном случае.
|
|
1393
|
+
*
|
|
1394
|
+
* ### Примеры использования
|
|
1395
|
+
*
|
|
1396
|
+
* 1. Проверка массивов:
|
|
1397
|
+
*
|
|
1398
|
+
* ```js
|
|
1399
|
+
* const valueInstance = new Value([1, 2, 3]);
|
|
1400
|
+
* const result = valueInstance.isList();
|
|
1401
|
+
* // Результат: true
|
|
1402
|
+
* ```
|
|
1403
|
+
*
|
|
1404
|
+
* 2. Проверка значений других типов:
|
|
1405
|
+
*
|
|
1406
|
+
* ```js
|
|
1407
|
+
* const valueInstance = new Value({});
|
|
1408
|
+
* const result = valueInstance.isList();
|
|
1409
|
+
* // Результат: false
|
|
1410
|
+
*
|
|
1411
|
+
* const valueInstance2 = new Value('string');
|
|
1412
|
+
* const result2 = valueInstance2.isList();
|
|
1413
|
+
* // Результат: false
|
|
1414
|
+
*
|
|
1415
|
+
* const valueInstance3 = new Value(42);
|
|
1416
|
+
* const result3 = valueInstance3.isList();
|
|
1417
|
+
* // Результат: false
|
|
1418
|
+
*
|
|
1419
|
+
* const valueInstance4 = new Value(null);
|
|
1420
|
+
* const result4 = valueInstance4.isList();
|
|
1421
|
+
* // Результат: false
|
|
1422
|
+
*
|
|
1423
|
+
* const valueInstance5 = new Value(undefined);
|
|
1424
|
+
* const result5 = valueInstance5.isList();
|
|
1425
|
+
* // Результат: false
|
|
1426
|
+
* ```
|
|
1427
|
+
*
|
|
1428
|
+
* @returns {boolean} Возвращает `true`, если значение является списком, и `false` в противном случае.
|
|
1429
|
+
*/
|
|
1430
|
+
isList() {
|
|
1431
|
+
return this.#getFromStore('isList', () => is_list(this.#value));
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
/**
|
|
1435
|
+
* Проверяет, является ли значение NaN.
|
|
1436
|
+
*
|
|
1437
|
+
* ### Описание
|
|
1438
|
+
*
|
|
1439
|
+
* Метод `isNaN` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, NaN (Not-a-Number).
|
|
1440
|
+
*
|
|
1441
|
+
* Метод использует функцию `is_nan` для выполнения проверки.
|
|
1442
|
+
*
|
|
1443
|
+
* ### Возвращаемое значение
|
|
1444
|
+
*
|
|
1445
|
+
* Возвращает `true`, если значение является NaN, и `false` в противном случае.
|
|
1446
|
+
*
|
|
1447
|
+
* ### Примеры использования
|
|
1448
|
+
*
|
|
1449
|
+
* 1. Проверка значения NaN:
|
|
1450
|
+
*
|
|
1451
|
+
* ```js
|
|
1452
|
+
* const valueInstance = new Value(NaN);
|
|
1453
|
+
* const result = valueInstance.isNaN();
|
|
1454
|
+
* // Результат: true
|
|
1455
|
+
* ```
|
|
1456
|
+
*
|
|
1457
|
+
* 2. Проверка числовых значений:
|
|
1458
|
+
*
|
|
1459
|
+
* ```js
|
|
1460
|
+
* const valueInstance = new Value(42);
|
|
1461
|
+
* const result = valueInstance.isNaN();
|
|
1462
|
+
* // Результат: false
|
|
1463
|
+
*
|
|
1464
|
+
* const valueInstance2 = new Value(3.14);
|
|
1465
|
+
* const result2 = valueInstance2.isNaN();
|
|
1466
|
+
* // Результат: false
|
|
1467
|
+
*
|
|
1468
|
+
* const valueInstance3 = new Value(Infinity);
|
|
1469
|
+
* const result3 = valueInstance3.isNaN();
|
|
1470
|
+
* // Результат: false
|
|
1471
|
+
* ```
|
|
1472
|
+
*
|
|
1473
|
+
* 3. Проверка значений других типов:
|
|
1474
|
+
*
|
|
1475
|
+
* ```js
|
|
1476
|
+
* const valueInstance = new Value('42');
|
|
1477
|
+
* const result = valueInstance.isNaN();
|
|
1478
|
+
* // Результат: false
|
|
1479
|
+
*
|
|
1480
|
+
* const valueInstance2 = new Value(true);
|
|
1481
|
+
* const result2 = valueInstance2.isNaN();
|
|
1482
|
+
* // Результат: false
|
|
1483
|
+
*
|
|
1484
|
+
* const valueInstance3 = new Value(null);
|
|
1485
|
+
* const result3 = valueInstance3.isNaN();
|
|
1486
|
+
* // Результат: false
|
|
1487
|
+
*
|
|
1488
|
+
* const valueInstance4 = new Value(undefined);
|
|
1489
|
+
* const result4 = valueInstance4.isNaN();
|
|
1490
|
+
* // Результат: false
|
|
1491
|
+
*
|
|
1492
|
+
* const valueInstance5 = new Value({});
|
|
1493
|
+
* const result5 = valueInstance5.isNaN();
|
|
1494
|
+
* // Результат: false
|
|
1495
|
+
*
|
|
1496
|
+
* const valueInstance6 = new Value([]);
|
|
1497
|
+
* const result6 = valueInstance6.isNaN();
|
|
1498
|
+
* // Результат: false
|
|
1499
|
+
* ```
|
|
1500
|
+
*
|
|
1501
|
+
* @returns {boolean} Возвращает `true`, если значение является NaN, и `false` в противном случае.
|
|
1502
|
+
*/
|
|
1503
|
+
isNaN() {
|
|
1504
|
+
return this.#getFromStore('isNaN', () => is_nan(this.#value));
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
/**
|
|
1508
|
+
* Проверяет, является ли значение null.
|
|
1509
|
+
*
|
|
1510
|
+
* ### Описание
|
|
1511
|
+
*
|
|
1512
|
+
* Метод `isNull` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, null.
|
|
1513
|
+
* Значение считается null, если оно строго равно null.
|
|
1514
|
+
*
|
|
1515
|
+
* Метод использует функцию `is_null` для выполнения проверки.
|
|
1516
|
+
*
|
|
1517
|
+
* ### Возвращаемое значение
|
|
1518
|
+
*
|
|
1519
|
+
* Возвращает `true`, если значение является null, и `false` в противном случае.
|
|
1520
|
+
*
|
|
1521
|
+
* ### Примеры использования
|
|
1522
|
+
*
|
|
1523
|
+
* 1. Проверка значения null:
|
|
1524
|
+
*
|
|
1525
|
+
* ```js
|
|
1526
|
+
* const valueInstance = new Value(null);
|
|
1527
|
+
* const result = valueInstance.isNull();
|
|
1528
|
+
* // Результат: true
|
|
1529
|
+
* ```
|
|
1530
|
+
*
|
|
1531
|
+
* 2. Проверка значения undefined:
|
|
1532
|
+
*
|
|
1533
|
+
* ```js
|
|
1534
|
+
* const valueInstance = new Value(undefined);
|
|
1535
|
+
* const result = valueInstance.isNull();
|
|
1536
|
+
* // Результат: false
|
|
1537
|
+
* ```
|
|
1538
|
+
*
|
|
1539
|
+
* 3. Проверка значения 0:
|
|
1540
|
+
*
|
|
1541
|
+
* ```js
|
|
1542
|
+
* const valueInstance = new Value(0);
|
|
1543
|
+
* const result = valueInstance.isNull();
|
|
1544
|
+
* // Результат: false
|
|
1545
|
+
* ```
|
|
1546
|
+
*
|
|
1547
|
+
* 4. Проверка значения пустой строки:
|
|
1548
|
+
*
|
|
1549
|
+
* ```js
|
|
1550
|
+
* const valueInstance = new Value('');
|
|
1551
|
+
* const result = valueInstance.isNull();
|
|
1552
|
+
* // Результат: false
|
|
1553
|
+
* ```
|
|
1554
|
+
*
|
|
1555
|
+
* @returns {boolean} Возвращает `true`, если значение является null, и `false` в противном случае.
|
|
1556
|
+
*/
|
|
1557
|
+
isNull() {
|
|
1558
|
+
return this.#getFromStore('isNull', () => is_null(this.#value));
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1561
|
+
/**
|
|
1562
|
+
* Проверяет, является ли значение числом.
|
|
1563
|
+
*
|
|
1564
|
+
* ### Описание
|
|
1565
|
+
*
|
|
1566
|
+
* Метод `isNumber` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, числом.
|
|
1567
|
+
* Метод использует оператор `typeof` для проверки типа значения и убеждается, что значение не является `Infinity` или `NaN`.
|
|
1568
|
+
*
|
|
1569
|
+
* Метод использует функцию `is_number` для выполнения проверки.
|
|
1570
|
+
*
|
|
1571
|
+
* ### Возвращаемое значение
|
|
1572
|
+
*
|
|
1573
|
+
* Возвращает `true`, если значение является числом, и `false` в противном случае.
|
|
1574
|
+
*
|
|
1575
|
+
* ### Примеры использования
|
|
1576
|
+
*
|
|
1577
|
+
* 1. Проверка числовых значений:
|
|
1578
|
+
*
|
|
1579
|
+
* ```js
|
|
1580
|
+
* const valueInstance = new Value(42);
|
|
1581
|
+
* const result = valueInstance.isNumber();
|
|
1582
|
+
* // Результат: true
|
|
1583
|
+
*
|
|
1584
|
+
* const valueInstance2 = new Value(3.14);
|
|
1585
|
+
* const result2 = valueInstance2.isNumber();
|
|
1586
|
+
* // Результат: true
|
|
1587
|
+
* ```
|
|
1588
|
+
*
|
|
1589
|
+
* 2. Проверка специальных числовых значений:
|
|
1590
|
+
*
|
|
1591
|
+
* ```js
|
|
1592
|
+
* const valueInstance = new Value(NaN);
|
|
1593
|
+
* const result = valueInstance.isNumber();
|
|
1594
|
+
* // Результат: false
|
|
1595
|
+
*
|
|
1596
|
+
* const valueInstance2 = new Value(Infinity);
|
|
1597
|
+
* const result2 = valueInstance2.isNumber();
|
|
1598
|
+
* // Результат: false
|
|
1599
|
+
* ```
|
|
1600
|
+
*
|
|
1601
|
+
* 3. Проверка значений других типов:
|
|
1602
|
+
*
|
|
1603
|
+
* ```js
|
|
1604
|
+
* const valueInstance = new Value('42');
|
|
1605
|
+
* const result = valueInstance.isNumber();
|
|
1606
|
+
* // Результат: false
|
|
1607
|
+
*
|
|
1608
|
+
* const valueInstance2 = new Value(true);
|
|
1609
|
+
* const result2 = valueInstance2.isNumber();
|
|
1610
|
+
* // Результат: false
|
|
1611
|
+
*
|
|
1612
|
+
* const valueInstance3 = new Value(null);
|
|
1613
|
+
* const result3 = valueInstance3.isNumber();
|
|
1614
|
+
* // Результат: false
|
|
1615
|
+
*
|
|
1616
|
+
* const valueInstance4 = new Value(undefined);
|
|
1617
|
+
* const result4 = valueInstance4.isNumber();
|
|
1618
|
+
* // Результат: false
|
|
1619
|
+
*
|
|
1620
|
+
* const valueInstance5 = new Value({});
|
|
1621
|
+
* const result5 = valueInstance5.isNumber();
|
|
1622
|
+
* // Результат: false
|
|
1623
|
+
*
|
|
1624
|
+
* const valueInstance6 = new Value([]);
|
|
1625
|
+
* const result6 = valueInstance6.isNumber();
|
|
1626
|
+
* // Результат: false
|
|
1627
|
+
* ```
|
|
1628
|
+
*
|
|
1629
|
+
* @returns {boolean} Возвращает `true`, если значение является числом, и `false` в противном случае.
|
|
1630
|
+
*/
|
|
1631
|
+
isNumber() {
|
|
1632
|
+
return this.#getFromStore('isNumber', () => is_number(this.#value));
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1635
|
+
/**
|
|
1636
|
+
* Проверяет, является ли значение числом или числовой строкой.
|
|
1637
|
+
*
|
|
1638
|
+
* ### Описание
|
|
1639
|
+
*
|
|
1640
|
+
* Метод `isNumeric` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, числом или строкой, которая может быть преобразована в число.
|
|
1641
|
+
*
|
|
1642
|
+
* Метод использует функцию `is_numeric` для выполнения проверки.
|
|
1643
|
+
*
|
|
1644
|
+
* ### Возвращаемое значение
|
|
1645
|
+
*
|
|
1646
|
+
* Возвращает `true`, если значение является числом или числовой строкой, и `false` в противном случае.
|
|
1647
|
+
*
|
|
1648
|
+
* ### Примеры использования
|
|
1649
|
+
*
|
|
1650
|
+
* 1. Проверка числовых значений:
|
|
1651
|
+
*
|
|
1652
|
+
* ```js
|
|
1653
|
+
* const valueInstance = new Value(42);
|
|
1654
|
+
* const result = valueInstance.isNumeric();
|
|
1655
|
+
* // Результат: true
|
|
1656
|
+
*
|
|
1657
|
+
* const valueInstance2 = new Value(3.14);
|
|
1658
|
+
* const result2 = valueInstance2.isNumeric();
|
|
1659
|
+
* // Результат: true
|
|
1660
|
+
* ```
|
|
1661
|
+
*
|
|
1662
|
+
* 2. Проверка числовых строк:
|
|
1663
|
+
*
|
|
1664
|
+
* ```js
|
|
1665
|
+
* const valueInstance = new Value('42');
|
|
1666
|
+
* const result = valueInstance.isNumeric();
|
|
1667
|
+
* // Результат: true
|
|
1668
|
+
*
|
|
1669
|
+
* const valueInstance2 = new Value('3.14');
|
|
1670
|
+
* const result2 = valueInstance2.isNumeric();
|
|
1671
|
+
* // Результат: true
|
|
1672
|
+
* ```
|
|
1673
|
+
*
|
|
1674
|
+
* 3. Проверка значений других типов:
|
|
1675
|
+
*
|
|
1676
|
+
* ```js
|
|
1677
|
+
* const valueInstance = new Value(true);
|
|
1678
|
+
* const result = valueInstance.isNumeric();
|
|
1679
|
+
* // Результат: false
|
|
1680
|
+
*
|
|
1681
|
+
* const valueInstance2 = new Value(null);
|
|
1682
|
+
* const result2 = valueInstance2.isNumeric();
|
|
1683
|
+
* // Результат: false
|
|
1684
|
+
*
|
|
1685
|
+
* const valueInstance3 = new Value(undefined);
|
|
1686
|
+
* const result3 = valueInstance3.isNumeric();
|
|
1687
|
+
* // Результат: false
|
|
1688
|
+
*
|
|
1689
|
+
* const valueInstance4 = new Value({});
|
|
1690
|
+
* const result4 = valueInstance4.isNumeric();
|
|
1691
|
+
* // Результат: false
|
|
1692
|
+
*
|
|
1693
|
+
* const valueInstance5 = new Value([]);
|
|
1694
|
+
* const result5 = valueInstance5.isNumeric();
|
|
1695
|
+
* // Результат: false
|
|
1696
|
+
*
|
|
1697
|
+
* const valueInstance6 = new Value('hello');
|
|
1698
|
+
* const result6 = valueInstance6.isNumeric();
|
|
1699
|
+
* // Результат: false
|
|
1700
|
+
* ```
|
|
1701
|
+
*
|
|
1702
|
+
* @returns {boolean} Возвращает `true`, если значение является числом или числовой строкой, и `false` в противном случае.
|
|
1703
|
+
*/
|
|
1704
|
+
isNumeric() {
|
|
1705
|
+
return this.#getFromStore('isNumeric', () => is_numeric(this.#value));
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
/**
|
|
1709
|
+
* Проверяет, является ли значение объектом.
|
|
1710
|
+
*
|
|
1711
|
+
* ### Описание
|
|
1712
|
+
*
|
|
1713
|
+
* Метод `isObject` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, объектом.
|
|
1714
|
+
* Метод использует оператор `typeof` для проверки типа значения и убеждается, что значение не является `null`.
|
|
1715
|
+
*
|
|
1716
|
+
* Метод использует функцию `is_object` для выполнения проверки.
|
|
1717
|
+
*
|
|
1718
|
+
* ### Возвращаемое значение
|
|
1719
|
+
*
|
|
1720
|
+
* Возвращает `true`, если значение является объектом, и `false` в противном случае.
|
|
1721
|
+
*
|
|
1722
|
+
* ### Примеры использования
|
|
1723
|
+
*
|
|
1724
|
+
* 1. Проверка объектов:
|
|
1725
|
+
*
|
|
1726
|
+
* ```js
|
|
1727
|
+
* const valueInstance = new Value({});
|
|
1728
|
+
* const result = valueInstance.isObject();
|
|
1729
|
+
* // Результат: true
|
|
1730
|
+
*
|
|
1731
|
+
* const valueInstance2 = new Value({ key: 'value' });
|
|
1732
|
+
* const result2 = valueInstance2.isObject();
|
|
1733
|
+
* // Результат: true
|
|
1734
|
+
* ```
|
|
1735
|
+
*
|
|
1736
|
+
* 2. Проверка значений других типов:
|
|
1737
|
+
*
|
|
1738
|
+
* ```js
|
|
1739
|
+
* const valueInstance = new Value(42);
|
|
1740
|
+
* const result = valueInstance.isObject();
|
|
1741
|
+
* // Результат: false (число)
|
|
1742
|
+
*
|
|
1743
|
+
* const valueInstance2 = new Value('string');
|
|
1744
|
+
* const result2 = valueInstance2.isObject();
|
|
1745
|
+
* // Результат: false (строка)
|
|
1746
|
+
*
|
|
1747
|
+
* const valueInstance3 = new Value(null);
|
|
1748
|
+
* const result3 = valueInstance3.isObject();
|
|
1749
|
+
* // Результат: false
|
|
1750
|
+
*
|
|
1751
|
+
* const valueInstance4 = new Value(undefined);
|
|
1752
|
+
* const result4 = valueInstance4.isObject();
|
|
1753
|
+
* // Результат: false
|
|
1754
|
+
*
|
|
1755
|
+
* const valueInstance5 = new Value([]);
|
|
1756
|
+
* const result5 = valueInstance5.isObject();
|
|
1757
|
+
* // Результат: false (массив)
|
|
1758
|
+
*
|
|
1759
|
+
* const valueInstance6 = new Value(() => {});
|
|
1760
|
+
* const result6 = valueInstance6.isObject();
|
|
1761
|
+
* // Результат: false (функция)
|
|
1762
|
+
* ```
|
|
1763
|
+
*
|
|
1764
|
+
* @returns {boolean} Возвращает `true`, если значение является объектом, и `false` в противном случае.
|
|
1765
|
+
*/
|
|
1766
|
+
isObject() {
|
|
1767
|
+
return this.#getFromStore('isObject', () => is_object(this.#value));
|
|
1768
|
+
}
|
|
1769
|
+
|
|
1770
|
+
/**
|
|
1771
|
+
* Проверяет, является ли значение скалярным.
|
|
1772
|
+
*
|
|
1773
|
+
* ### Описание
|
|
1774
|
+
*
|
|
1775
|
+
* Метод `isScalar` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, скалярным.
|
|
1776
|
+
* Скалярные переменные — это переменные, содержащие `int`, `float`, `string`, `bool` и `symbol`.
|
|
1777
|
+
* Типы `array`, `object`, `null`, `undefined` — не скалярные.
|
|
1778
|
+
*
|
|
1779
|
+
* Метод использует функцию `is_scalar` для выполнения проверки.
|
|
1780
|
+
*
|
|
1781
|
+
* ### Возвращаемое значение
|
|
1782
|
+
*
|
|
1783
|
+
* Возвращает `true`, если значение является скалярным, и `false` в противном случае.
|
|
1784
|
+
*
|
|
1785
|
+
* ### Примеры использования
|
|
1786
|
+
*
|
|
1787
|
+
* 1. Проверка скалярных значений:
|
|
1788
|
+
*
|
|
1789
|
+
* ```js
|
|
1790
|
+
* const valueInstance1 = new Value(true);
|
|
1791
|
+
* const result1 = valueInstance1.isScalar();
|
|
1792
|
+
* // Результат: true
|
|
1793
|
+
*
|
|
1794
|
+
* const valueInstance2 = new Value(42);
|
|
1795
|
+
* const result2 = valueInstance2.isScalar();
|
|
1796
|
+
* // Результат: true
|
|
1797
|
+
*
|
|
1798
|
+
* const valueInstance3 = new Value('hello');
|
|
1799
|
+
* const result3 = valueInstance3.isScalar();
|
|
1800
|
+
* // Результат: true
|
|
1801
|
+
*
|
|
1802
|
+
* const valueInstance4 = new Value(Symbol('symbol'));
|
|
1803
|
+
* const result4 = valueInstance4.isScalar();
|
|
1804
|
+
* // Результат: true
|
|
1805
|
+
* ```
|
|
1806
|
+
*
|
|
1807
|
+
* 2. Проверка не скалярных значений:
|
|
1808
|
+
*
|
|
1809
|
+
* ```js
|
|
1810
|
+
* const valueInstance1 = new Value(null);
|
|
1811
|
+
* const result1 = valueInstance1.isScalar();
|
|
1812
|
+
* // Результат: false
|
|
1813
|
+
*
|
|
1814
|
+
* const valueInstance2 = new Value(undefined);
|
|
1815
|
+
* const result2 = valueInstance2.isScalar();
|
|
1816
|
+
* // Результат: false
|
|
1817
|
+
*
|
|
1818
|
+
* const valueInstance3 = new Value({});
|
|
1819
|
+
* const result3 = valueInstance3.isScalar();
|
|
1820
|
+
* // Результат: false
|
|
1821
|
+
*
|
|
1822
|
+
* const valueInstance4 = new Value([]);
|
|
1823
|
+
* const result4 = valueInstance4.isScalar();
|
|
1824
|
+
* // Результат: false
|
|
1825
|
+
*
|
|
1826
|
+
* const valueInstance5 = new Value(() => {});
|
|
1827
|
+
* const result5 = valueInstance5.isScalar();
|
|
1828
|
+
* // Результат: false
|
|
1829
|
+
* ```
|
|
1830
|
+
*
|
|
1831
|
+
* @returns {boolean} Возвращает `true`, если значение является скалярным, и `false` в противном случае.
|
|
1832
|
+
*/
|
|
1833
|
+
isScalar() {
|
|
1834
|
+
return this.#getFromStore('isScalar', () => is_scalar(this.#value));
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
/**
|
|
1838
|
+
* Проверяет, является ли значение строкой.
|
|
1839
|
+
*
|
|
1840
|
+
* ### Описание
|
|
1841
|
+
*
|
|
1842
|
+
* Метод `isString` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, строкой.
|
|
1843
|
+
* Метод использует оператор `typeof` для проверки типа значения.
|
|
1844
|
+
*
|
|
1845
|
+
* Метод использует функцию `is_string` для выполнения проверки.
|
|
1846
|
+
*
|
|
1847
|
+
* ### Возвращаемое значение
|
|
1848
|
+
*
|
|
1849
|
+
* Возвращает `true`, если значение является строкой, и `false` в противном случае.
|
|
1850
|
+
*
|
|
1851
|
+
* ### Примеры использования
|
|
1852
|
+
*
|
|
1853
|
+
* 1. Проверка строковых значений:
|
|
1854
|
+
*
|
|
1855
|
+
* ```js
|
|
1856
|
+
* const valueInstance = new Value('hello');
|
|
1857
|
+
* const result = valueInstance.isString();
|
|
1858
|
+
* // Результат: true
|
|
1859
|
+
*
|
|
1860
|
+
* const valueInstance2 = new Value('');
|
|
1861
|
+
* const result2 = valueInstance2.isString();
|
|
1862
|
+
* // Результат: true
|
|
1863
|
+
* ```
|
|
1864
|
+
*
|
|
1865
|
+
* 2. Проверка значений других типов:
|
|
1866
|
+
*
|
|
1867
|
+
* ```js
|
|
1868
|
+
* const valueInstance = new Value(42);
|
|
1869
|
+
* const result = valueInstance.isString();
|
|
1870
|
+
* // Результат: false (число)
|
|
1871
|
+
*
|
|
1872
|
+
* const valueInstance2 = new Value(true);
|
|
1873
|
+
* const result2 = valueInstance2.isString();
|
|
1874
|
+
* // Результат: false (логическое значение)
|
|
1875
|
+
*
|
|
1876
|
+
* const valueInstance3 = new Value(null);
|
|
1877
|
+
* const result3 = valueInstance3.isString();
|
|
1878
|
+
* // Результат: false
|
|
1879
|
+
*
|
|
1880
|
+
* const valueInstance4 = new Value(undefined);
|
|
1881
|
+
* const result4 = valueInstance4.isString();
|
|
1882
|
+
* // Результат: false
|
|
1883
|
+
*
|
|
1884
|
+
* const valueInstance5 = new Value({});
|
|
1885
|
+
* const result5 = valueInstance5.isString();
|
|
1886
|
+
* // Результат: false (объект)
|
|
1887
|
+
*
|
|
1888
|
+
* const valueInstance6 = new Value([]);
|
|
1889
|
+
* const result6 = valueInstance6.isString();
|
|
1890
|
+
* // Результат: false (массив)
|
|
1891
|
+
* ```
|
|
1892
|
+
*
|
|
1893
|
+
* @returns {boolean} Возвращает `true`, если значение является строкой, и `false` в противном случае.
|
|
1894
|
+
*/
|
|
1895
|
+
isString() {
|
|
1896
|
+
return this.#getFromStore('isString', () => is_string(this.#value));
|
|
1897
|
+
}
|
|
1898
|
+
|
|
1899
|
+
/**
|
|
1900
|
+
* Проверяет, является ли значение символом.
|
|
1901
|
+
*
|
|
1902
|
+
* ### Описание
|
|
1903
|
+
*
|
|
1904
|
+
* Метод `isSymbol` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, символом.
|
|
1905
|
+
* Метод использует оператор `typeof` для проверки типа значения.
|
|
1906
|
+
*
|
|
1907
|
+
* Метод использует функцию `is_symbol` для выполнения проверки.
|
|
1908
|
+
*
|
|
1909
|
+
* ### Возвращаемое значение
|
|
1910
|
+
*
|
|
1911
|
+
* Возвращает `true`, если значение является символом, и `false` в противном случае.
|
|
1912
|
+
*
|
|
1913
|
+
* ### Примеры использования
|
|
1914
|
+
*
|
|
1915
|
+
* 1. Проверка символов:
|
|
1916
|
+
*
|
|
1917
|
+
* ```js
|
|
1918
|
+
* const valueInstance = new Value(Symbol('symbol'));
|
|
1919
|
+
* const result = valueInstance.isSymbol();
|
|
1920
|
+
* // Результат: true
|
|
1921
|
+
*
|
|
1922
|
+
* const valueInstance2 = new Value(Symbol.iterator);
|
|
1923
|
+
* const result2 = valueInstance2.isSymbol();
|
|
1924
|
+
* // Результат: true
|
|
1925
|
+
* ```
|
|
1926
|
+
*
|
|
1927
|
+
* 2. Проверка значений других типов:
|
|
1928
|
+
*
|
|
1929
|
+
* ```js
|
|
1930
|
+
* const valueInstance = new Value('hello');
|
|
1931
|
+
* const result = valueInstance.isSymbol();
|
|
1932
|
+
* // Результат: false (строка)
|
|
1933
|
+
*
|
|
1934
|
+
* const valueInstance2 = new Value(42);
|
|
1935
|
+
* const result2 = valueInstance2.isSymbol();
|
|
1936
|
+
* // Результат: false (число)
|
|
1937
|
+
*
|
|
1938
|
+
* const valueInstance3 = new Value(true);
|
|
1939
|
+
* const result3 = valueInstance3.isSymbol();
|
|
1940
|
+
* // Результат: false (логическое значение)
|
|
1941
|
+
*
|
|
1942
|
+
* const valueInstance4 = new Value(null);
|
|
1943
|
+
* const result4 = valueInstance4.isSymbol();
|
|
1944
|
+
* // Результат: false
|
|
1945
|
+
*
|
|
1946
|
+
* const valueInstance5 = new Value(undefined);
|
|
1947
|
+
* const result5 = valueInstance5.isSymbol();
|
|
1948
|
+
* // Результат: false
|
|
1949
|
+
*
|
|
1950
|
+
* const valueInstance6 = new Value({});
|
|
1951
|
+
* const result6 = valueInstance6.isSymbol();
|
|
1952
|
+
* // Результат: false (объект)
|
|
1953
|
+
*
|
|
1954
|
+
* const valueInstance7 = new Value([]);
|
|
1955
|
+
* const result7 = valueInstance7.isSymbol();
|
|
1956
|
+
* // Результат: false (массив)
|
|
1957
|
+
*
|
|
1958
|
+
* const valueInstance8 = new Value(() => {});
|
|
1959
|
+
* const result8 = valueInstance8.isSymbol();
|
|
1960
|
+
* // Результат: false (функция)
|
|
1961
|
+
* ```
|
|
1962
|
+
*
|
|
1963
|
+
* @returns {boolean} Возвращает `true`, если значение является символом, и `false` в противном случае.
|
|
1964
|
+
*/
|
|
1965
|
+
isSymbol() {
|
|
1966
|
+
return this.#getFromStore('isSymbol', () => is_symbol(this.#value));
|
|
1967
|
+
}
|
|
1968
|
+
|
|
1969
|
+
/**
|
|
1970
|
+
* Проверяет, является ли значение `undefined`.
|
|
1971
|
+
*
|
|
1972
|
+
* ### Описание
|
|
1973
|
+
*
|
|
1974
|
+
* Метод `isUndefined` используется для проверки, является ли значение, хранящееся в экземпляре класса `Value`, `undefined`.
|
|
1975
|
+
* Метод использует оператор `typeof` для проверки типа значения.
|
|
1976
|
+
*
|
|
1977
|
+
* Метод использует функцию `is_undefined` для выполнения проверки.
|
|
1978
|
+
*
|
|
1979
|
+
* ### Возвращаемое значение
|
|
1980
|
+
*
|
|
1981
|
+
* Возвращает `true`, если значение является `undefined`, и `false` в противном случае.
|
|
1982
|
+
*
|
|
1983
|
+
* ### Примеры использования
|
|
1984
|
+
*
|
|
1985
|
+
* 1. Проверка значения `undefined`:
|
|
1986
|
+
*
|
|
1987
|
+
* ```js
|
|
1988
|
+
* const valueInstance = new Value(undefined);
|
|
1989
|
+
* const result = valueInstance.isUndefined();
|
|
1990
|
+
* // Результат: true
|
|
1991
|
+
* ```
|
|
1992
|
+
*
|
|
1993
|
+
* 2. Проверка значений других типов:
|
|
1994
|
+
*
|
|
1995
|
+
* ```js
|
|
1996
|
+
* const valueInstance = new Value(null);
|
|
1997
|
+
* const result = valueInstance.isUndefined();
|
|
1998
|
+
* // Результат: false
|
|
1999
|
+
*
|
|
2000
|
+
* const valueInstance2 = new Value(42);
|
|
2001
|
+
* const result2 = valueInstance2.isUndefined();
|
|
2002
|
+
* // Результат: false (число)
|
|
2003
|
+
*
|
|
2004
|
+
* const valueInstance3 = new Value('hello');
|
|
2005
|
+
* const result3 = valueInstance3.isUndefined();
|
|
2006
|
+
* // Результат: false (строка)
|
|
2007
|
+
*
|
|
2008
|
+
* const valueInstance4 = new Value(true);
|
|
2009
|
+
* const result4 = valueInstance4.isUndefined();
|
|
2010
|
+
* // Результат: false (логическое значение)
|
|
2011
|
+
*
|
|
2012
|
+
* const valueInstance5 = new Value({});
|
|
2013
|
+
* const result5 = valueInstance5.isUndefined();
|
|
2014
|
+
* // Результат: false (объект)
|
|
2015
|
+
*
|
|
2016
|
+
* const valueInstance6 = new Value([]);
|
|
2017
|
+
* const result6 = valueInstance6.isUndefined();
|
|
2018
|
+
* // Результат: false (массив)
|
|
2019
|
+
*
|
|
2020
|
+
* const valueInstance7 = new Value(() => {});
|
|
2021
|
+
* const result7 = valueInstance7.isUndefined();
|
|
2022
|
+
* // Результат: false (функция)
|
|
2023
|
+
* ```
|
|
2024
|
+
*
|
|
2025
|
+
* @returns {boolean} Возвращает `true`, если значение является `undefined`, и `false` в противном случае.
|
|
2026
|
+
*/
|
|
2027
|
+
isUndefined() {
|
|
2028
|
+
return this.#getFromStore('isUndefined', () => is_undefined(this.#value));
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
/**
|
|
2032
|
+
* Преобразует значение в экземпляре класса `Value` к массиву.
|
|
2033
|
+
*
|
|
2034
|
+
* ### Описание
|
|
2035
|
+
*
|
|
2036
|
+
* Метод `toArray` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в массив.
|
|
2037
|
+
* Если значение уже является массивом (тип `Array` или ассоциативный массив), возвращается оно же.
|
|
2038
|
+
* Объекты (экземпляры классов) преобразуются в массив с одним элементом.
|
|
2039
|
+
*
|
|
2040
|
+
* Метод использует функцию `to_array` для выполнения преобразования.
|
|
2041
|
+
*
|
|
2042
|
+
* ### Возвращаемое значение
|
|
2043
|
+
*
|
|
2044
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2045
|
+
*
|
|
2046
|
+
* ### Примеры использования
|
|
2047
|
+
*
|
|
2048
|
+
* 1. Преобразование строки в массив:
|
|
2049
|
+
*
|
|
2050
|
+
* ```js
|
|
2051
|
+
* const valueInstance = new Value('example');
|
|
2052
|
+
* const result = valueInstance.toArray();
|
|
2053
|
+
* // Результат: новый экземпляр класса Value с значением ["example"]
|
|
2054
|
+
* ```
|
|
2055
|
+
*
|
|
2056
|
+
* 2. Преобразование числа в массив:
|
|
2057
|
+
*
|
|
2058
|
+
* ```js
|
|
2059
|
+
* const valueInstance = new Value(123);
|
|
2060
|
+
* const result = valueInstance.toArray();
|
|
2061
|
+
* // Результат: новый экземпляр класса Value с значением [123]
|
|
2062
|
+
* ```
|
|
2063
|
+
*
|
|
2064
|
+
* 3. Преобразование массива (без изменений):
|
|
2065
|
+
*
|
|
2066
|
+
* ```js
|
|
2067
|
+
* const valueInstance = new Value([1, 2, 3]);
|
|
2068
|
+
* const result = valueInstance.toArray();
|
|
2069
|
+
* // Результат: новый экземпляр класса Value с значением [1, 2, 3]
|
|
2070
|
+
* ```
|
|
2071
|
+
*
|
|
2072
|
+
* 4. Преобразование объекта в массив:
|
|
2073
|
+
*
|
|
2074
|
+
* ```js
|
|
2075
|
+
* const valueInstance = new Value({ key: 'value' });
|
|
2076
|
+
* const result = valueInstance.toArray();
|
|
2077
|
+
* // Результат: новый экземпляр класса Value с значением { key: "value" }
|
|
2078
|
+
* ```
|
|
2079
|
+
*
|
|
2080
|
+
* 5. Преобразование экземпляра класса в массив:
|
|
2081
|
+
*
|
|
2082
|
+
* ```js
|
|
2083
|
+
* class MyClass {}
|
|
2084
|
+
* const valueInstance = new Value(new MyClass());
|
|
2085
|
+
* const result = valueInstance.toArray();
|
|
2086
|
+
* // Результат: новый экземпляр класса Value с значением [instance]
|
|
2087
|
+
* ```
|
|
2088
|
+
*
|
|
2089
|
+
* 6. Преобразование null:
|
|
2090
|
+
*
|
|
2091
|
+
* ```js
|
|
2092
|
+
* const valueInstance = new Value(null);
|
|
2093
|
+
* const result = valueInstance.toArray();
|
|
2094
|
+
* // Результат: новый экземпляр класса Value с значением []
|
|
2095
|
+
* ```
|
|
2096
|
+
*
|
|
2097
|
+
* 7. Преобразование undefined:
|
|
2098
|
+
*
|
|
2099
|
+
* ```js
|
|
2100
|
+
* const valueInstance = new Value(undefined);
|
|
2101
|
+
* const result = valueInstance.toArray();
|
|
2102
|
+
* // Результат: новый экземпляр класса Value с значением []
|
|
2103
|
+
* ```
|
|
2104
|
+
*
|
|
2105
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2106
|
+
*/
|
|
2107
|
+
toArray() {
|
|
2108
|
+
return new Value(to_array(this.#value));
|
|
2109
|
+
}
|
|
2110
|
+
|
|
2111
|
+
/**
|
|
2112
|
+
* Преобразует значение в экземпляре класса `Value` к ассоциативному массиву.
|
|
2113
|
+
*
|
|
2114
|
+
* ### Описание
|
|
2115
|
+
*
|
|
2116
|
+
* Метод `toAssoc` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в ассоциативный массив.
|
|
2117
|
+
* Если значение уже является объектом, возвращается оно же. Массивы преобразуются в объекты с индексами в качестве ключей.
|
|
2118
|
+
*
|
|
2119
|
+
* Метод использует функцию `to_assoc` для выполнения преобразования.
|
|
2120
|
+
*
|
|
2121
|
+
* ### Возвращаемое значение
|
|
2122
|
+
*
|
|
2123
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2124
|
+
*
|
|
2125
|
+
* ### Примеры использования
|
|
2126
|
+
*
|
|
2127
|
+
* 1. Преобразование строки в ассоциативный массив:
|
|
2128
|
+
*
|
|
2129
|
+
* ```js
|
|
2130
|
+
* const valueInstance = new Value('example');
|
|
2131
|
+
* const result = valueInstance.toAssoc();
|
|
2132
|
+
* // Результат: новый экземпляр класса Value с значением { 0: 'example' }
|
|
2133
|
+
* ```
|
|
2134
|
+
*
|
|
2135
|
+
* 2. Преобразование числа в ассоциативный массив:
|
|
2136
|
+
*
|
|
2137
|
+
* ```js
|
|
2138
|
+
* const valueInstance = new Value(123);
|
|
2139
|
+
* const result = valueInstance.toAssoc();
|
|
2140
|
+
* // Результат: новый экземпляр класса Value с значением { 0: 123 }
|
|
2141
|
+
* ```
|
|
2142
|
+
*
|
|
2143
|
+
* 3. Преобразование массива в ассоциативный массив:
|
|
2144
|
+
*
|
|
2145
|
+
* ```js
|
|
2146
|
+
* const valueInstance = new Value([1, 2, 3]);
|
|
2147
|
+
* const result = valueInstance.toAssoc();
|
|
2148
|
+
* // Результат: новый экземпляр класса Value с значением { 0: 1, 1: 2, 2: 3 }
|
|
2149
|
+
* ```
|
|
2150
|
+
*
|
|
2151
|
+
* 4. Преобразование ассоциативного массива (без изменений):
|
|
2152
|
+
*
|
|
2153
|
+
* ```js
|
|
2154
|
+
* const valueInstance = new Value({ key: 'value' });
|
|
2155
|
+
* const result = valueInstance.toAssoc();
|
|
2156
|
+
* // Результат: новый экземпляр класса Value с значением { key: 'value' }
|
|
2157
|
+
* ```
|
|
2158
|
+
*
|
|
2159
|
+
* 5. Преобразование экземпляра класса в ассоциативный массив:
|
|
2160
|
+
*
|
|
2161
|
+
* ```js
|
|
2162
|
+
* class MyClass {}
|
|
2163
|
+
* const valueInstance = new Value(new MyClass());
|
|
2164
|
+
* const result = valueInstance.toAssoc();
|
|
2165
|
+
* // Результат: новый экземпляр класса Value с значением { 0: instance }
|
|
2166
|
+
* ```
|
|
2167
|
+
*
|
|
2168
|
+
* 6. Преобразование null:
|
|
2169
|
+
*
|
|
2170
|
+
* ```js
|
|
2171
|
+
* const valueInstance = new Value(null);
|
|
2172
|
+
* const result = valueInstance.toAssoc();
|
|
2173
|
+
* // Результат: новый экземпляр класса Value с значением {}
|
|
2174
|
+
* ```
|
|
2175
|
+
*
|
|
2176
|
+
* 7. Преобразование undefined:
|
|
2177
|
+
*
|
|
2178
|
+
* ```js
|
|
2179
|
+
* const valueInstance = new Value(undefined);
|
|
2180
|
+
* const result = valueInstance.toAssoc();
|
|
2181
|
+
* // Результат: новый экземпляр класса Value с значением {}
|
|
2182
|
+
* ```
|
|
2183
|
+
*
|
|
2184
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2185
|
+
*/
|
|
2186
|
+
toAssoc() {
|
|
2187
|
+
return new Value(to_assoc(this.#value));
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
/**
|
|
2191
|
+
* Преобразует значение в экземпляре класса `Value` к логическому типу.
|
|
2192
|
+
*
|
|
2193
|
+
* ### Описание
|
|
2194
|
+
*
|
|
2195
|
+
* Метод `toBool` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в логическое значение.
|
|
2196
|
+
* Если значение является пустым массивом, метод возвращает `false`.
|
|
2197
|
+
*
|
|
2198
|
+
* Метод использует функцию `to_bool` для выполнения преобразования.
|
|
2199
|
+
*
|
|
2200
|
+
* ### Возвращаемое значение
|
|
2201
|
+
*
|
|
2202
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2203
|
+
*
|
|
2204
|
+
* ### Примеры использования
|
|
2205
|
+
*
|
|
2206
|
+
* 1. Преобразование пустого массива в `false`:
|
|
2207
|
+
*
|
|
2208
|
+
* ```js
|
|
2209
|
+
* const valueInstance = new Value([]);
|
|
2210
|
+
* const result = valueInstance.toBool();
|
|
2211
|
+
* // Результат: новый экземпляр класса Value с значением false
|
|
2212
|
+
* ```
|
|
2213
|
+
*
|
|
2214
|
+
* 2. Преобразование пустого ассоциативного массива в `false`:
|
|
2215
|
+
*
|
|
2216
|
+
* ```js
|
|
2217
|
+
* const valueInstance = new Value({});
|
|
2218
|
+
* const result = valueInstance.toBool();
|
|
2219
|
+
* // Результат: новый экземпляр класса Value с значением false
|
|
2220
|
+
* ```
|
|
2221
|
+
*
|
|
2222
|
+
* 3. Преобразование непустого массива в `true`:
|
|
2223
|
+
*
|
|
2224
|
+
* ```js
|
|
2225
|
+
* const valueInstance = new Value([1, 2, 3]);
|
|
2226
|
+
* const result = valueInstance.toBool();
|
|
2227
|
+
* // Результат: новый экземпляр класса Value с значением true
|
|
2228
|
+
* ```
|
|
2229
|
+
*
|
|
2230
|
+
* 4. Преобразование других значений:
|
|
2231
|
+
*
|
|
2232
|
+
* ```js
|
|
2233
|
+
* const valueInstance1 = new Value('example');
|
|
2234
|
+
* const result1 = valueInstance1.toBool();
|
|
2235
|
+
* // Результат: новый экземпляр класса Value с значением true
|
|
2236
|
+
*
|
|
2237
|
+
* const valueInstance2 = new Value(123);
|
|
2238
|
+
* const result2 = valueInstance2.toBool();
|
|
2239
|
+
* // Результат: новый экземпляр класса Value с значением true
|
|
2240
|
+
*
|
|
2241
|
+
* const valueInstance3 = new Value(null);
|
|
2242
|
+
* const result3 = valueInstance3.toBool();
|
|
2243
|
+
* // Результат: новый экземпляр класса Value с значением false
|
|
2244
|
+
*
|
|
2245
|
+
* const valueInstance4 = new Value(undefined);
|
|
2246
|
+
* const result4 = valueInstance4.toBool();
|
|
2247
|
+
* // Результат: новый экземпляр класса Value с значением false
|
|
2248
|
+
* ```
|
|
2249
|
+
*
|
|
2250
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2251
|
+
*/
|
|
2252
|
+
toBool() {
|
|
2253
|
+
return new Value(to_bool(this.#value));
|
|
2254
|
+
}
|
|
2255
|
+
|
|
2256
|
+
/**
|
|
2257
|
+
* Преобразует значение в экземпляре класса `Value` к логическому типу.
|
|
2258
|
+
*
|
|
2259
|
+
* ### Описание
|
|
2260
|
+
*
|
|
2261
|
+
* Метод `toBoolean` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в логическое значение.
|
|
2262
|
+
* Если значение является пустым массивом, метод возвращает `false`.
|
|
2263
|
+
*
|
|
2264
|
+
* Метод использует функцию `to_bool` для выполнения преобразования.
|
|
2265
|
+
*
|
|
2266
|
+
* ### Возвращаемое значение
|
|
2267
|
+
*
|
|
2268
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2269
|
+
*
|
|
2270
|
+
* ### Примеры использования
|
|
2271
|
+
*
|
|
2272
|
+
* 1. Преобразование пустого массива в `false`:
|
|
2273
|
+
*
|
|
2274
|
+
* ```js
|
|
2275
|
+
* const valueInstance = new Value([]);
|
|
2276
|
+
* const result = valueInstance.toBoolean();
|
|
2277
|
+
* // Результат: новый экземпляр класса Value с значением false
|
|
2278
|
+
* ```
|
|
2279
|
+
*
|
|
2280
|
+
* 2. Преобразование пустого ассоциативного массива в `false`:
|
|
2281
|
+
*
|
|
2282
|
+
* ```js
|
|
2283
|
+
* const valueInstance = new Value({});
|
|
2284
|
+
* const result = valueInstance.toBoolean();
|
|
2285
|
+
* // Результат: новый экземпляр класса Value с значением false
|
|
2286
|
+
* ```
|
|
2287
|
+
*
|
|
2288
|
+
* 3. Преобразование непустого массива в `true`:
|
|
2289
|
+
*
|
|
2290
|
+
* ```js
|
|
2291
|
+
* const valueInstance = new Value([1, 2, 3]);
|
|
2292
|
+
* const result = valueInstance.toBoolean();
|
|
2293
|
+
* // Результат: новый экземпляр класса Value с значением true
|
|
2294
|
+
* ```
|
|
2295
|
+
*
|
|
2296
|
+
* 4. Преобразование других значений:
|
|
2297
|
+
*
|
|
2298
|
+
* ```js
|
|
2299
|
+
* const valueInstance1 = new Value('example');
|
|
2300
|
+
* const result1 = valueInstance1.toBoolean();
|
|
2301
|
+
* // Результат: новый экземпляр класса Value с значением true
|
|
2302
|
+
*
|
|
2303
|
+
* const valueInstance2 = new Value(123);
|
|
2304
|
+
* const result2 = valueInstance2.toBoolean();
|
|
2305
|
+
* // Результат: новый экземпляр класса Value с значением true
|
|
2306
|
+
*
|
|
2307
|
+
* const valueInstance3 = new Value(null);
|
|
2308
|
+
* const result3 = valueInstance3.toBoolean();
|
|
2309
|
+
* // Результат: новый экземпляр класса Value с значением false
|
|
2310
|
+
*
|
|
2311
|
+
* const valueInstance4 = new Value(undefined);
|
|
2312
|
+
* const result4 = valueInstance4.toBoolean();
|
|
2313
|
+
* // Результат: новый экземпляр класса Value с значением false
|
|
2314
|
+
* ```
|
|
2315
|
+
*
|
|
2316
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2317
|
+
*/
|
|
2318
|
+
toBoolean() {
|
|
2319
|
+
return new Value(to_bool(this.#value));
|
|
2320
|
+
}
|
|
2321
|
+
|
|
2322
|
+
/**
|
|
2323
|
+
* Преобразует значение в экземпляре класса `Value` к числу с плавающей точкой.
|
|
2324
|
+
*
|
|
2325
|
+
* ### Описание
|
|
2326
|
+
*
|
|
2327
|
+
* Метод `toFloat` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в число с плавающей точкой.
|
|
2328
|
+
* Если значение не является числом или строкой, метод возвращает `1` для истинных значений и `0` для ложных значений.
|
|
2329
|
+
*
|
|
2330
|
+
* Метод использует функцию `to_float` для выполнения преобразования.
|
|
2331
|
+
*
|
|
2332
|
+
* ### Возвращаемое значение
|
|
2333
|
+
*
|
|
2334
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2335
|
+
*
|
|
2336
|
+
* ### Примеры использования
|
|
2337
|
+
*
|
|
2338
|
+
* 1. Преобразование строки в число с плавающей точкой:
|
|
2339
|
+
*
|
|
2340
|
+
* ```js
|
|
2341
|
+
* const valueInstance = new Value('123.45');
|
|
2342
|
+
* const result = valueInstance.toFloat();
|
|
2343
|
+
* // Результат: новый экземпляр класса Value с значением 123.45
|
|
2344
|
+
* ```
|
|
2345
|
+
*
|
|
2346
|
+
* 2. Преобразование целого числа в число с плавающей точкой:
|
|
2347
|
+
*
|
|
2348
|
+
* ```js
|
|
2349
|
+
* const valueInstance = new Value(123);
|
|
2350
|
+
* const result = valueInstance.toFloat();
|
|
2351
|
+
* // Результат: новый экземпляр класса Value с значением 123.0
|
|
2352
|
+
* ```
|
|
2353
|
+
*
|
|
2354
|
+
* 3. Преобразование булевых значений:
|
|
2355
|
+
*
|
|
2356
|
+
* ```js
|
|
2357
|
+
* const valueInstance1 = new Value(true);
|
|
2358
|
+
* const result1 = valueInstance1.toFloat();
|
|
2359
|
+
* // Результат: новый экземпляр класса Value с значением 1.0
|
|
2360
|
+
*
|
|
2361
|
+
* const valueInstance2 = new Value(false);
|
|
2362
|
+
* const result2 = valueInstance2.toFloat();
|
|
2363
|
+
* // Результат: новый экземпляр класса Value с значением 0.0
|
|
2364
|
+
* ```
|
|
2365
|
+
*
|
|
2366
|
+
* 4. Преобразование других значений:
|
|
2367
|
+
*
|
|
2368
|
+
* ```js
|
|
2369
|
+
* const valueInstance1 = new Value(null);
|
|
2370
|
+
* const result1 = valueInstance1.toFloat();
|
|
2371
|
+
* // Результат: новый экземпляр класса Value с значением 0.0
|
|
2372
|
+
*
|
|
2373
|
+
* const valueInstance2 = new Value(undefined);
|
|
2374
|
+
* const result2 = valueInstance2.toFloat();
|
|
2375
|
+
* // Результат: новый экземпляр класса Value с значением 0.0
|
|
2376
|
+
*
|
|
2377
|
+
* const valueInstance3 = new Value('example');
|
|
2378
|
+
* const result3 = valueInstance3.toFloat();
|
|
2379
|
+
* // Результат: новый экземпляр класса Value с значением 0.0
|
|
2380
|
+
* ```
|
|
2381
|
+
*
|
|
2382
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2383
|
+
*/
|
|
2384
|
+
toFloat() {
|
|
2385
|
+
return new Value(to_float(this.#value));
|
|
2386
|
+
}
|
|
2387
|
+
|
|
2388
|
+
/**
|
|
2389
|
+
* Преобразует значение в экземпляре класса `Value` к целому числу.
|
|
2390
|
+
*
|
|
2391
|
+
* ### Описание
|
|
2392
|
+
*
|
|
2393
|
+
* Метод `toInt` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в целое число.
|
|
2394
|
+
* Если значение не является числом или строкой, метод возвращает `1` для истинных значений и `0` для ложных значений.
|
|
2395
|
+
*
|
|
2396
|
+
* Метод использует функцию `to_int` для выполнения преобразования.
|
|
2397
|
+
*
|
|
2398
|
+
* ### Возвращаемое значение
|
|
2399
|
+
*
|
|
2400
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2401
|
+
*
|
|
2402
|
+
* ### Примеры использования
|
|
2403
|
+
*
|
|
2404
|
+
* 1. Преобразование строки в целое число:
|
|
2405
|
+
*
|
|
2406
|
+
* ```js
|
|
2407
|
+
* const valueInstance = new Value('123');
|
|
2408
|
+
* const result = valueInstance.toInt();
|
|
2409
|
+
* // Результат: новый экземпляр класса Value с значением 123
|
|
2410
|
+
* ```
|
|
2411
|
+
*
|
|
2412
|
+
* 2. Преобразование числа с плавающей точкой в целое число:
|
|
2413
|
+
*
|
|
2414
|
+
* ```js
|
|
2415
|
+
* const valueInstance = new Value(123.45);
|
|
2416
|
+
* const result = valueInstance.toInt();
|
|
2417
|
+
* // Результат: новый экземпляр класса Value с значением 123
|
|
2418
|
+
* ```
|
|
2419
|
+
*
|
|
2420
|
+
* 3. Преобразование булевых значений:
|
|
2421
|
+
*
|
|
2422
|
+
* ```js
|
|
2423
|
+
* const valueInstance1 = new Value(true);
|
|
2424
|
+
* const result1 = valueInstance1.toInt();
|
|
2425
|
+
* // Результат: новый экземпляр класса Value с значением 1
|
|
2426
|
+
*
|
|
2427
|
+
* const valueInstance2 = new Value(false);
|
|
2428
|
+
* const result2 = valueInstance2.toInt();
|
|
2429
|
+
* // Результат: новый экземпляр класса Value с значением 0
|
|
2430
|
+
* ```
|
|
2431
|
+
*
|
|
2432
|
+
* 4. Преобразование других значений:
|
|
2433
|
+
*
|
|
2434
|
+
* ```js
|
|
2435
|
+
* const valueInstance1 = new Value(null);
|
|
2436
|
+
* const result1 = valueInstance1.toInt();
|
|
2437
|
+
* // Результат: новый экземпляр класса Value с значением 0
|
|
2438
|
+
*
|
|
2439
|
+
* const valueInstance2 = new Value(undefined);
|
|
2440
|
+
* const result2 = valueInstance2.toInt();
|
|
2441
|
+
* // Результат: новый экземпляр класса Value с значением 0
|
|
2442
|
+
*
|
|
2443
|
+
* const valueInstance3 = new Value('example');
|
|
2444
|
+
* const result3 = valueInstance3.toInt();
|
|
2445
|
+
* // Результат: новый экземпляр класса Value с значением 0
|
|
2446
|
+
* ```
|
|
2447
|
+
*
|
|
2448
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2449
|
+
*/
|
|
2450
|
+
toInt() {
|
|
2451
|
+
return new Value(to_int(this.#value));
|
|
2452
|
+
}
|
|
2453
|
+
|
|
2454
|
+
/**
|
|
2455
|
+
* Преобразует значение в экземпляре класса `Value` к целому числу.
|
|
2456
|
+
*
|
|
2457
|
+
* ### Описание
|
|
2458
|
+
*
|
|
2459
|
+
* Метод `toInteger` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в целое число.
|
|
2460
|
+
* Если значение не является числом или строкой, метод возвращает `1` для истинных значений и `0` для ложных значений.
|
|
2461
|
+
*
|
|
2462
|
+
* Метод использует функцию `to_int` для выполнения преобразования.
|
|
2463
|
+
*
|
|
2464
|
+
* ### Возвращаемое значение
|
|
2465
|
+
*
|
|
2466
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2467
|
+
*
|
|
2468
|
+
* ### Примеры использования
|
|
2469
|
+
*
|
|
2470
|
+
* 1. Преобразование строки в целое число:
|
|
2471
|
+
*
|
|
2472
|
+
* ```js
|
|
2473
|
+
* const valueInstance = new Value('123');
|
|
2474
|
+
* const result = valueInstance.toInteger();
|
|
2475
|
+
* // Результат: новый экземпляр класса Value с значением 123
|
|
2476
|
+
* ```
|
|
2477
|
+
*
|
|
2478
|
+
* 2. Преобразование числа с плавающей точкой в целое число:
|
|
2479
|
+
*
|
|
2480
|
+
* ```js
|
|
2481
|
+
* const valueInstance = new Value(123.45);
|
|
2482
|
+
* const result = valueInstance.toInteger();
|
|
2483
|
+
* // Результат: новый экземпляр класса Value с значением 123
|
|
2484
|
+
* ```
|
|
2485
|
+
*
|
|
2486
|
+
* 3. Преобразование булевых значений:
|
|
2487
|
+
*
|
|
2488
|
+
* ```js
|
|
2489
|
+
* const valueInstance1 = new Value(true);
|
|
2490
|
+
* const result1 = valueInstance1.toInteger();
|
|
2491
|
+
* // Результат: новый экземпляр класса Value с значением 1
|
|
2492
|
+
*
|
|
2493
|
+
* const valueInstance2 = new Value(false);
|
|
2494
|
+
* const result2 = valueInstance2.toInteger();
|
|
2495
|
+
* // Результат: новый экземпляр класса Value с значением 0
|
|
2496
|
+
* ```
|
|
2497
|
+
*
|
|
2498
|
+
* 4. Преобразование других значений:
|
|
2499
|
+
*
|
|
2500
|
+
* ```js
|
|
2501
|
+
* const valueInstance1 = new Value(null);
|
|
2502
|
+
* const result1 = valueInstance1.toInteger();
|
|
2503
|
+
* // Результат: новый экземпляр класса Value с значением 0
|
|
2504
|
+
*
|
|
2505
|
+
* const valueInstance2 = new Value(undefined);
|
|
2506
|
+
* const result2 = valueInstance2.toInteger();
|
|
2507
|
+
* // Результат: новый экземпляр класса Value с значением 0
|
|
2508
|
+
*
|
|
2509
|
+
* const valueInstance3 = new Value('example');
|
|
2510
|
+
* const result3 = valueInstance3.toInteger();
|
|
2511
|
+
* // Результат: новый экземпляр класса Value с значением 0
|
|
2512
|
+
* ```
|
|
2513
|
+
*
|
|
2514
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2515
|
+
*/
|
|
2516
|
+
toInteger() {
|
|
2517
|
+
return new Value(to_int(this.#value));
|
|
2518
|
+
}
|
|
2519
|
+
|
|
2520
|
+
/**
|
|
2521
|
+
* Преобразует значение в экземпляре класса `Value` к списку.
|
|
2522
|
+
*
|
|
2523
|
+
* ### Описание
|
|
2524
|
+
*
|
|
2525
|
+
* Метод `toList` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в список.
|
|
2526
|
+
* Если значение является `null` или `undefined`, возвращается пустой массив.
|
|
2527
|
+
* Если значение уже является массивом, возвращается оно же.
|
|
2528
|
+
* Если значение является ассоциативным массивом, возвращается массив значений объекта.
|
|
2529
|
+
* Для других значений создается массив, содержащий это значение.
|
|
2530
|
+
*
|
|
2531
|
+
* Метод использует функцию `to_list` для выполнения преобразования.
|
|
2532
|
+
*
|
|
2533
|
+
* ### Возвращаемое значение
|
|
2534
|
+
*
|
|
2535
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2536
|
+
*
|
|
2537
|
+
* ### Примеры использования
|
|
2538
|
+
*
|
|
2539
|
+
* 1. Преобразование `null` в пустой массив:
|
|
2540
|
+
*
|
|
2541
|
+
* ```js
|
|
2542
|
+
* const valueInstance = new Value(null);
|
|
2543
|
+
* const result = valueInstance.toList();
|
|
2544
|
+
* // Результат: новый экземпляр класса Value с значением []
|
|
2545
|
+
* ```
|
|
2546
|
+
*
|
|
2547
|
+
* 2. Преобразование `undefined` в пустой массив:
|
|
2548
|
+
*
|
|
2549
|
+
* ```js
|
|
2550
|
+
* const valueInstance = new Value(undefined);
|
|
2551
|
+
* const result = valueInstance.toList();
|
|
2552
|
+
* // Результат: новый экземпляр класса Value с значением []
|
|
2553
|
+
* ```
|
|
2554
|
+
*
|
|
2555
|
+
* 3. Преобразование массива (без изменений):
|
|
2556
|
+
*
|
|
2557
|
+
* ```js
|
|
2558
|
+
* const valueInstance = new Value([1, 2, 3]);
|
|
2559
|
+
* const result = valueInstance.toList();
|
|
2560
|
+
* // Результат: новый экземпляр класса Value с значением [1, 2, 3]
|
|
2561
|
+
* ```
|
|
2562
|
+
*
|
|
2563
|
+
* 4. Преобразование ассоциативного массива в массив значений:
|
|
2564
|
+
*
|
|
2565
|
+
* ```js
|
|
2566
|
+
* const valueInstance = new Value({ key: 'value' });
|
|
2567
|
+
* const result = valueInstance.toList();
|
|
2568
|
+
* // Результат: новый экземпляр класса Value с значением ['value']
|
|
2569
|
+
* ```
|
|
2570
|
+
*
|
|
2571
|
+
* 5. Преобразование строки в массив:
|
|
2572
|
+
*
|
|
2573
|
+
* ```js
|
|
2574
|
+
* const valueInstance = new Value('example');
|
|
2575
|
+
* const result = valueInstance.toList();
|
|
2576
|
+
* // Результат: новый экземпляр класса Value с значением ['example']
|
|
2577
|
+
* ```
|
|
2578
|
+
*
|
|
2579
|
+
* 6. Преобразование числа в массив:
|
|
2580
|
+
*
|
|
2581
|
+
* ```js
|
|
2582
|
+
* const valueInstance = new Value(123);
|
|
2583
|
+
* const result = valueInstance.toList();
|
|
2584
|
+
* // Результат: новый экземпляр класса Value с значением [123]
|
|
2585
|
+
* ```
|
|
2586
|
+
*
|
|
2587
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2588
|
+
*/
|
|
2589
|
+
toList() {
|
|
2590
|
+
return new Value(to_list(this.#value));
|
|
2591
|
+
}
|
|
2592
|
+
|
|
2593
|
+
/**
|
|
2594
|
+
* Преобразует значение в экземпляре класса `Value` к объекту.
|
|
2595
|
+
*
|
|
2596
|
+
* ### Описание
|
|
2597
|
+
*
|
|
2598
|
+
* Метод `toObject` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в объект.
|
|
2599
|
+
* Если значение уже является объектом, оно возвращается без изменений.
|
|
2600
|
+
* Если значение является классом, возвращается новый экземпляр этого класса.
|
|
2601
|
+
* Если значение является массивом, элементы массива копируются в новый объект.
|
|
2602
|
+
* Для других значений создается объект с полем `value`, содержащим это значение.
|
|
2603
|
+
*
|
|
2604
|
+
* Метод использует функцию `to_object` для выполнения преобразования.
|
|
2605
|
+
*
|
|
2606
|
+
* ### Возвращаемое значение
|
|
2607
|
+
*
|
|
2608
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2609
|
+
*
|
|
2610
|
+
* ### Примеры использования
|
|
2611
|
+
*
|
|
2612
|
+
* 1. Преобразование объекта:
|
|
2613
|
+
*
|
|
2614
|
+
* ```js
|
|
2615
|
+
* class MyClass {}
|
|
2616
|
+
* const obj = new MyClass();
|
|
2617
|
+
* const valueInstance = new Value(obj);
|
|
2618
|
+
* const result = valueInstance.toObject();
|
|
2619
|
+
* // Результат: новый экземпляр класса Value с значением obj
|
|
2620
|
+
* ```
|
|
2621
|
+
*
|
|
2622
|
+
* 2. Преобразование класса:
|
|
2623
|
+
*
|
|
2624
|
+
* ```js
|
|
2625
|
+
* class MyClass {}
|
|
2626
|
+
* const valueInstance = new Value(MyClass);
|
|
2627
|
+
* const result = valueInstance.toObject();
|
|
2628
|
+
* // Результат: новый экземпляр класса Value с значением экземпляра MyClass
|
|
2629
|
+
* ```
|
|
2630
|
+
*
|
|
2631
|
+
* 3. Преобразование null и undefined:
|
|
2632
|
+
*
|
|
2633
|
+
* ```js
|
|
2634
|
+
* const valueInstance1 = new Value(null);
|
|
2635
|
+
* const result1 = valueInstance1.toObject();
|
|
2636
|
+
* // Результат: новый экземпляр класса Value с значением экземпляра анонимного класса
|
|
2637
|
+
*
|
|
2638
|
+
* const valueInstance2 = new Value(undefined);
|
|
2639
|
+
* const result2 = valueInstance2.toObject();
|
|
2640
|
+
* // Результат: новый экземпляр класса Value с значением экземпляра анонимного класса
|
|
2641
|
+
* ```
|
|
2642
|
+
*
|
|
2643
|
+
* 4. Преобразование массива:
|
|
2644
|
+
*
|
|
2645
|
+
* ```js
|
|
2646
|
+
* const arr = [1, 2, 3];
|
|
2647
|
+
* const valueInstance = new Value(arr);
|
|
2648
|
+
* const result = valueInstance.toObject();
|
|
2649
|
+
* // Результат: новый экземпляр класса Value с значением объекта с элементами массива
|
|
2650
|
+
* ```
|
|
2651
|
+
*
|
|
2652
|
+
* 5. Преобразование других значений:
|
|
2653
|
+
*
|
|
2654
|
+
* ```js
|
|
2655
|
+
* const valueInstance = new Value('example');
|
|
2656
|
+
* const result = valueInstance.toObject();
|
|
2657
|
+
* // Результат: новый экземпляр класса Value с значением объекта с полем value, содержащим 'example'
|
|
2658
|
+
* ```
|
|
2659
|
+
*
|
|
2660
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2661
|
+
*/
|
|
2662
|
+
toObject() {
|
|
2663
|
+
return new Value(to_object(this.#value));
|
|
2664
|
+
}
|
|
2665
|
+
|
|
2666
|
+
/**
|
|
2667
|
+
* Преобразует значение в экземпляре класса `Value` к строке.
|
|
2668
|
+
*
|
|
2669
|
+
* ### Описание
|
|
2670
|
+
*
|
|
2671
|
+
* Метод `toString` используется для преобразования значения, хранящегося в экземпляре класса `Value`, в строку.
|
|
2672
|
+
* Он обрабатывает массивы, объекты, классы, функции, символы и другие типы данных, возвращая их строковое представление.
|
|
2673
|
+
*
|
|
2674
|
+
* Метод использует функцию `to_string` для выполнения преобразования.
|
|
2675
|
+
*
|
|
2676
|
+
* ### Возвращаемое значение
|
|
2677
|
+
*
|
|
2678
|
+
* Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2679
|
+
*
|
|
2680
|
+
* ### Примеры использования
|
|
2681
|
+
*
|
|
2682
|
+
* 1. Преобразование строки:
|
|
2683
|
+
*
|
|
2684
|
+
* ```js
|
|
2685
|
+
* const valueInstance = new Value('example');
|
|
2686
|
+
* const result = valueInstance.toString();
|
|
2687
|
+
* // Результат: новый экземпляр класса Value с значением 'example'
|
|
2688
|
+
* ```
|
|
2689
|
+
*
|
|
2690
|
+
* 2. Преобразование числа:
|
|
2691
|
+
*
|
|
2692
|
+
* ```js
|
|
2693
|
+
* const valueInstance = new Value(123);
|
|
2694
|
+
* const result = valueInstance.toString();
|
|
2695
|
+
* // Результат: новый экземпляр класса Value с значением '123'
|
|
2696
|
+
* ```
|
|
2697
|
+
*
|
|
2698
|
+
* 3. Преобразование булевых значений:
|
|
2699
|
+
*
|
|
2700
|
+
* ```js
|
|
2701
|
+
* const valueInstance1 = new Value(true);
|
|
2702
|
+
* const result1 = valueInstance1.toString();
|
|
2703
|
+
* // Результат: новый экземпляр класса Value с значением 'true'
|
|
2704
|
+
*
|
|
2705
|
+
* const valueInstance2 = new Value(false);
|
|
2706
|
+
* const result2 = valueInstance2.toString();
|
|
2707
|
+
* // Результат: новый экземпляр класса Value с значением 'false'
|
|
2708
|
+
* ```
|
|
2709
|
+
*
|
|
2710
|
+
* 4. Преобразование null и undefined:
|
|
2711
|
+
*
|
|
2712
|
+
* ```js
|
|
2713
|
+
* const valueInstance1 = new Value(null);
|
|
2714
|
+
* const result1 = valueInstance1.toString();
|
|
2715
|
+
* // Результат: новый экземпляр класса Value с значением 'null'
|
|
2716
|
+
*
|
|
2717
|
+
* const valueInstance2 = new Value(undefined);
|
|
2718
|
+
* const result2 = valueInstance2.toString();
|
|
2719
|
+
* // Результат: новый экземпляр класса Value с значением 'undefined'
|
|
2720
|
+
* ```
|
|
2721
|
+
*
|
|
2722
|
+
* 5. Преобразование массива:
|
|
2723
|
+
*
|
|
2724
|
+
* ```js
|
|
2725
|
+
* const arr = [1, 2, 3];
|
|
2726
|
+
* const valueInstance = new Value(arr);
|
|
2727
|
+
* const result = valueInstance.toString();
|
|
2728
|
+
* // Результат: новый экземпляр класса Value с значением '[\n 1,\n 2,\n 3,\n]'
|
|
2729
|
+
* ```
|
|
2730
|
+
*
|
|
2731
|
+
* 6. Преобразование объекта:
|
|
2732
|
+
*
|
|
2733
|
+
* ```js
|
|
2734
|
+
* const obj = { key: 'value' };
|
|
2735
|
+
* const valueInstance = new Value(obj);
|
|
2736
|
+
* const result = valueInstance.toString();
|
|
2737
|
+
* // Результат: новый экземпляр класса Value с значением '{\n key: 'value',\n}'
|
|
2738
|
+
* ```
|
|
2739
|
+
*
|
|
2740
|
+
* 7. Преобразование функции:
|
|
2741
|
+
*
|
|
2742
|
+
* ```js
|
|
2743
|
+
* const func = function() {};
|
|
2744
|
+
* const valueInstance = new Value(func);
|
|
2745
|
+
* const result = valueInstance.toString();
|
|
2746
|
+
* // Результат: новый экземпляр класса Value с значением 'function func() {}'
|
|
2747
|
+
* ```
|
|
2748
|
+
*
|
|
2749
|
+
* 8. Преобразование символа:
|
|
2750
|
+
*
|
|
2751
|
+
* ```js
|
|
2752
|
+
* const symbol = Symbol('example');
|
|
2753
|
+
* const valueInstance = new Value(symbol);
|
|
2754
|
+
* const result = valueInstance.toString();
|
|
2755
|
+
* // Результат: новый экземпляр класса Value с значением 'Symbol(example)'
|
|
2756
|
+
* ```
|
|
2757
|
+
*
|
|
2758
|
+
* 9. Преобразование BigInt:
|
|
2759
|
+
*
|
|
2760
|
+
* ```js
|
|
2761
|
+
* const bigInt = BigInt(123);
|
|
2762
|
+
* const valueInstance = new Value(bigInt);
|
|
2763
|
+
* const result = valueInstance.toString();
|
|
2764
|
+
* // Результат: новый экземпляр класса Value с значением '123'
|
|
2765
|
+
* ```
|
|
2766
|
+
*
|
|
2767
|
+
* 10. Преобразование класса:
|
|
2768
|
+
*
|
|
2769
|
+
* ```js
|
|
2770
|
+
* class MyClass {
|
|
2771
|
+
* static test = 'test';
|
|
2772
|
+
* }
|
|
2773
|
+
* const valueInstance = new Value(MyClass);
|
|
2774
|
+
* const result = valueInstance.toString();
|
|
2775
|
+
* // Результат: новый экземпляр класса Value с значением 'class MyClass {}'
|
|
2776
|
+
* ```
|
|
2777
|
+
*
|
|
2778
|
+
* 11. Преобразование экземпляра класса:
|
|
2779
|
+
*
|
|
2780
|
+
* ```js
|
|
2781
|
+
* class MyClass {}
|
|
2782
|
+
* const instance = new MyClass();
|
|
2783
|
+
* const valueInstance = new Value(instance);
|
|
2784
|
+
* const result = valueInstance.toString();
|
|
2785
|
+
* // Результат: новый экземпляр класса Value с значением 'object MyClass'
|
|
2786
|
+
* ```
|
|
2787
|
+
*
|
|
2788
|
+
* @returns {Value} Возвращает новый экземпляр класса `Value` с преобразованным значением.
|
|
2789
|
+
*/
|
|
2790
|
+
toString() {
|
|
2791
|
+
return new Value(to_string(this.#value));
|
|
2792
|
+
}
|
|
2793
|
+
|
|
2794
|
+
/**
|
|
2795
|
+
* Получает значение из хранилища или вычисляет его с помощью переданной функции.
|
|
2796
|
+
*
|
|
2797
|
+
* ### Описание
|
|
2798
|
+
*
|
|
2799
|
+
* Приватный метод `#getFromStore` используется для получения значения из внутреннего хранилища `#store`.
|
|
2800
|
+
* Если значение уже существует в хранилище, оно возвращается. В противном случае значение вычисляется с помощью переданной функции `getter`, сохраняется в хранилище и затем возвращается.
|
|
2801
|
+
*
|
|
2802
|
+
* Этот метод позволяет избежать повторных вычислений одного и того же значения, что может быть полезно для оптимизации производительности.
|
|
2803
|
+
*
|
|
2804
|
+
* ### Параметры
|
|
2805
|
+
*
|
|
2806
|
+
* - `name` (string)
|
|
2807
|
+
* Имя ключа, под которым значение хранится в хранилище.
|
|
2808
|
+
* - `getter` (function)
|
|
2809
|
+
* Функция, которая используется для вычисления значения, если оно отсутствует в хранилище.
|
|
2810
|
+
*
|
|
2811
|
+
* ### Возвращаемое значение
|
|
2812
|
+
*
|
|
2813
|
+
* Возвращает значение, хранящееся под указанным ключом в хранилище, или вычисленное значение, если его не было в хранилище.
|
|
2814
|
+
*
|
|
2815
|
+
* ### Примеры использования
|
|
2816
|
+
*
|
|
2817
|
+
* 1. Получение значения из хранилища:
|
|
2818
|
+
*
|
|
2819
|
+
* ```js
|
|
2820
|
+
* const valueInstance = new Value(123);
|
|
2821
|
+
* const result = valueInstance.#getFromStore('type', () => 'integer');
|
|
2822
|
+
* // Результат: 'integer'
|
|
2823
|
+
* ```
|
|
2824
|
+
*
|
|
2825
|
+
* 2. Использование функции для вычисления значения:
|
|
2826
|
+
*
|
|
2827
|
+
* ```js
|
|
2828
|
+
* const valueInstance = new Value(123);
|
|
2829
|
+
* const result = valueInstance.#getFromStore('type', () => gettype(123));
|
|
2830
|
+
* // Результат: 'integer'
|
|
2831
|
+
* ```
|
|
2832
|
+
*
|
|
2833
|
+
* @param {string} name Имя ключа, под которым значение хранится в хранилище.
|
|
2834
|
+
* @param {function} getter Функция, которая используется для вычисления значения, если оно отсутствует в хранилище.
|
|
2835
|
+
* @returns {any} Возвращает значение, хранящееся под указанным ключом в хранилище, или вычисленное значение, если его не было в хранилище.
|
|
2836
|
+
*/
|
|
2837
|
+
#getFromStore(name, getter) {
|
|
2838
|
+
if (!(name in this.#store)) {
|
|
2839
|
+
this.#store[name] = getter();
|
|
2840
|
+
}
|
|
2841
|
+
|
|
2842
|
+
return this.#store[name];
|
|
2843
|
+
}
|
|
2844
|
+
}
|
|
2845
|
+
|
|
2846
|
+
export default Value;
|