Javascript 中的符号及其示例

javascript 中的符号及其示例

symbol 是一个内置对象,其构造函数返回一个 symbol 基元 — 也称为 symbol 值 或只是一个 symbol — 保证是唯一的。符号通常用于向对象添加唯一的属性键,这些属性键不会与任何其他代码可能添加到该对象的键发生冲突,并且对于其他代码通常用于访问该对象的任何机制都是隐藏的。这实现了一种弱封装形式,或者一种弱形式的信息隐藏。

示例:使用符号作为唯一属性键

javascriptcopy code// create unique symbolsconst id = symbol('id');const name = symbol('name');// create an object with symbol-based propertiesconst user = {    [id]: 101,    [name]: 'alice',    age: 25};// access the symbol propertiesconsole.log(user[id]); // 101console.log(user[name]); // "alice"// add another property using a symbolconst email = symbol('email');user[email] = 'alice@example.com';console.log(user[email]); // "alice@example.com"// symbols are not enumerable in for...in loops or object.keysfor (const key in user) {    console.log(key); // only "age" is logged}console.log(object.keys(user)); // ["age"]// you can still access all properties if you know the symbol keysconsole.log(object.getownpropertysymbols(user)); // [symbol(id), symbol(name), symbol(email)]

登录后复制

示例:使用 symbol.iterator 使对象可迭代

javascriptcopy codeconst collection = {    items: ['apple', 'banana', 'cherry'],    [symbol.iterator]() {        let index = 0;        const items = this.items;        return {            next() {                if (index < items.length) {                    return { value: items[index++], done: false };                } else {                    return { done: true };                }            }        };    }};// iterate over the objectfor (const item of collection) {    console.log(item);}// output:// apple// banana// cherry

登录后复制

此示例展示了 symbol.iterator 如何允许使用 for…of 迭代自定义对象。

流行的 npm 库中可用的符号:

示例:在流行的 npm 库中使用符号

symbol 使用的一个著名示例是 express.js 框架,这是一个广泛使用的 node.js web 应用程序框架。在 express.js 中,symbol 用于定义唯一的属性键,防止与用户定义的属性发生潜在冲突。

立即学习“Java免费学习笔记(深入)”;

来自 express.js 的代码片段:

javascriptCopy code// In Express.js, a symbol is used to define a unique property keyconst app = express();app[Symbol('router')] = router;

登录后复制

在此代码片段中,symbol(‘router’) 创建一个唯一的符号,用作应用程序对象的属性键。这种方法确保路由器属性是独特的,并且不会干扰可能添加到应用程序对象的其他属性。

在库中使用符号的好处:

唯一性:符号保证属性键是唯一的,降低意外覆盖的风险。不变性:一旦创建,符号就无法更改,提供稳定的标识符。不可枚举性: 由符号键控的属性在循环中不可枚举,这对于不应公开的内部属性可能是有益的。

以上就是Javascript 中的符号及其示例的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2648149.html

(0)
上一篇 2025年3月7日 08:07:45
下一篇 2025年2月25日 01:02:26

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Logging System with Proxy and Fetch

    代理对象:fetchlogger 包装了 fetch 函数。它使用 apply trap 来拦截对 fetch 的调用。 请求日志记录:记录请求的 url 和选项。响应处理:记录响应状态、状态文本和 url。克隆响应以确保正文可以被多次读取…

    2025年3月7日
    200
  • 如何将交互式图表和图形添加到 Tailwind CSS 管理模板

    管理仪表板模板对于有效管理和可视化数据至关重要。 tailwind css 以其实用性优先的方法而闻名,它简化了设计令人惊叹的管理仪表板的过程。向这些仪表板添加交互式图表和图形可以将原始数据转换为富有洞察力的可视化效果,从而增强整体用户体验…

    2025年3月7日 编程技术
    200
  • typescript断言类型

    TypeScript 中的断言类型明确了表达式或变量的类型,帮助编译器理解特定的类型。使用断言类型有两种方法:非空断言操作符 (!) 用于确保变量不会为 null 或 undefined,类型断言语法 () 将所需类型包围在表达式周围。断言…

    2025年3月7日
    200
  • typescript高级技巧

    高级 TypeScript 技巧包括:联合类型、元组、枚举、接口继承、泛型函数和类、模块命名空间和导入、类和方法装饰器、async/await 和 Promise.all,以及类型断言、类型保护和编译时检查。这些技巧可显著提高代码质量、可维…

    2025年3月7日
    200
  • js如何加密

    JavaScript 提供多种加密方法:1. 字符串加密(AES);2. 哈希算法(SHA256);3. 对称加密(TripleDES);4. 非对称加密(rsa);5. 其他方法(base64、Web Crypto API)。 如何使用 …

    2025年3月7日
    200
  • 如何封装js

    封装 JavaScript 代码可提高代码可维护性、可扩展性和可测试性。步骤如下:创建模块。定义私有变量和函数。导出公共接口。导入模块。 如何封装 JavaScript 代码 封装是将代码组织成可重用的模块的过程。这有助于提高代码的可维护性…

    2025年3月7日
    200
  • js如何异步

    答案:是的,JavaScript 中存在异步编程,它是一种处理长时间任务的方法,无需等待其完成即可继续执行其他任务。详细描述:异步编程原理:异步编程允许任务在后台运行,而主程序继续执行。JavaScript 中的异步编程:可以使用回调函数、…

    2025年3月7日
    200
  • js如何自定义事件

    JavaScript 中,自定義事件允許開發人員創建並觸發特定應用事件,讓程式碼做出反應:使用 new CustomEvent() 構造函數創建自定義事件。使用 dispatchEvent() 方法觸發自定義事件。使用 addEventLi…

    2025年3月7日
    200
  • js文件如何写

    如何编写 JavaScript 文件入门:创建一个文本文件并以 .js 扩展名保存。使用 var、let 或 const 定义变量,并用 function 关键字定义函数。运用 if、else if 和 else 语句控制代码流,for、w…

    2025年3月7日
    200
  • 如何优化js性能

    如何优化 JavaScript 性能?减少代码量,包括移除未使用的代码、使用缩小和混淆工具、进行代码分割。谨慎使用库和框架,只包含所需功能、按需加载、避免同时使用多个大型库。优化事件处理,使用事件委托、取消不再需要的事件侦听器、使用不可变对…

    2025年3月7日
    200

发表回复

登录后才能评论