sách gpt4 ai đã đi

Biểu tượng JavaScript

In lại 作者:知者 更新时间:2024-03-13 01:41:01 29 4
mua khóa gpt4 Nike

在本教程中,您将借助示例了解 JavaScript 符号。

Biểu tượng JavaScript

JavaScript ES6 引入了一种新的原始数据类型,称为 Symbol(符号)。符号是不可变的(不能更改)并且是唯一的。例如,

// two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false

虽然 value1 和 value2 都包含相同的描述说明,但它们是不同的。

创建符号

可以使用 Symbol()函数创建 Symbol。例如,

// creating symbol const x = Symbol() typeof x; // symbol

可以传递可选字符串作为其描述说明。例如,

const x = Symbol('hey'); console.log(x); // Symbol(hey)
访问符号描述说明

要访问符号的描述说明,我们使用 . 操作符。例如,

const x = Symbol('hey'); console.log(x.description); // hey
添加符号作为对象键

可以使用方括号 [ ] 将符号作为键添加到对象中。例如,

let id = Symbol("id"); let person = { name: "Jack", // adding symbol as a key [id]: 123 // not "id": 123 }; console.log(person); // {name: "Jack", Symbol(id): 123}
for…in 循环中不包含符号

for…in 循环不会迭代符号属性。例如,

let id = Symbol("id"); let person = { name: "Jack", age: 25, [id]: 12 }; // using for...in for (let key in person) { console.log(key); }

Đầu ra

name age
在对象中使用符号的好处

如果在不同的程序中使用相同的代码段,那么最好在对象键中使用符号。这是因为您可以在不同的代码中使用相同的键名,从而避免重复问题。例如,

let person = { name: "Jack" }; // creating Symbol let id = Symbol("id"); // adding symbol as a key person[id] = 12;

在上面的程序中,如果 person 对象也被另一个程序使用,那么您不希望添加一个可以被另一个程序访问或更改的属性。因此,通过使用符号,您可以创建一个可以使用的唯一属性。
    现在,如果另一个程序也需要使用名为 id 的属性,只需添加名为 id 的符号,就不会出现重复问题。例如,

let person = { name: "Jack" }; let id = Symbol("id"); person[id] = "Another value";

在上述程序中,即使使用相同的名称存储值,符号数据类型也将具有唯一的值。
    在上面的程序中,如果使用了字符串键,那么后面的程序就会更改属性的值。例如,

let person = { name: "Jack" }; // using string as key person.id = 12; console.log(person.id); // 12 // Another program overwrites value person.id = 'Another value'; console.log(person.id); // Another value

在上面的程序中,第二个 user.id 覆盖上一个值。

符号方法

Symbol 有多种方法可用。

phương pháp 描述说明
for() 搜索现有符号
keyFor() 从全局符号注册表返回一个共享符号键
toSource() 返回包含符号对象源的字符串
toString() 返回包含符号描述的字符串
valueOf() 返回符号对象的基本值
示例:符号方法
// get symbol by name let sym = Symbol.for('hello'); let sym1 = Symbol.for('id'); // get name by symbol console.log( Symbol.keyFor(sym) ); // hello console.log( Symbol.keyFor(sym1) ); // id
符号属性
属性 描述说明
asyncIterator 返回对象的默认异步迭代器
hasInstance 确定构造函数对象是否将对象识别为其实例
isConcatSpreadable 指示是否应将对象展平为其数组元素
iterator 返回对象的默认迭代器
match 与字符串匹配
matchAll 返回一个迭代器,它产生正则表达式与字符串的匹配项
replace 替换字符串的匹配子字符串
tìm kiếm 返回与正则表达式匹配的字符串中的索引
split 在与正则表达式匹配的索引处拆分字符串
species 创建派生对象
toPrimitive 将对象转换为基本值
toStringTag 提供对象的默认描述
Sự miêu tả 返回包含符号描述的字符串
示例:符号属性示例
const x = Symbol('hey'); // description property console.log(x.description); // hey const stringArray = ['a', 'b', 'c']; const numberArray = [1, 2, 3]; // isConcatSpreadable property numberArray[Symbol.isConcatSpreadable] = false; let result = stringArray.concat(numberArray); console.log(result); // ["a", "b", "c", [1, 2, 3]]

上一教程 :JS Numbers                                          下一教程 :JS try…catch…finally

参考文档

[1] Parewa Labs Pvt. Ltd. (2022, January 1). Getting Started With JavaScript, from Parewa Labs Pvt. Ltd: https://www.programiz.com/javascript/symbol

29 4 0
Bài viết được đề xuất: leetcode刷题(第461题)—— 汉明距离
Bài viết được đề xuất: SpringBoot-ElasticSearch8+
Bài viết được đề xuất: Spring数据源配置
Bài viết được đề xuất: Java笔记-一种表单提交AES加密案例(仿某大学bbs加密逻辑)
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com