当前位置: 首页 > wzjs >正文

建立网站目录的时候十大职业资格培训机构

建立网站目录的时候,十大职业资格培训机构,中山建设信息网站,wordpress变微软雅黑1. 什么是Symbol? Symbol是ES6引入的一种新的原始数据类型,表示独一无二的值,它是JavaScript中的第七种数据类型。 2. 创建Symbol // 创建一个Symbol const sym1 Symbol(); const sym2 Symbol(description); // 可以添加描述console.log…

1. 什么是Symbol?

Symbol是ES6引入的一种新的原始数据类型,表示独一无二的值,它是JavaScript中的第七种数据类型。

2. 创建Symbol

// 创建一个Symbol
const sym1 = Symbol();
const sym2 = Symbol('description'); // 可以添加描述console.log(typeof sym1);     // "symbol"
console.log(sym2.toString()); // "Symbol(description)"

3. Symbol的特性

1. 唯一性,每个Symbol都是唯一的,即使描述相同;

const sym1 = Symbol('test');
const sym2 = Symbol('test');console.log(sym1 === sym2); // false

2. 不可枚举性,Symbol属性不会出现在for循环中,也不会被Object.keys()、Object.getOwnPropertyNames()返回;

const obj = {[Symbol('key')]: 'value',normalKey: 'normalValue'
};console.log(Object.keys(obj)); // ["normalKey"]

3. 不可强制转换,Symbol不能与其他类型的值进行运算;

const sym = Symbol('test');
console.log(sym + 'string'); 
// TypeError: Cannot convert a Symbol value to a string

4. Symbol的使用场景

1. 作为对象属性,防止属性名冲突,适合定义对象私有属性;

const NAME = Symbol('name');
const AGE = Symbol('age');const person = {[NAME]: '张三',[AGE]: 25,job: '工程师'
};console.log(person[NAME]); // "张三"

2. 定义常量,确保常量值唯一;

const LOG_LEVEL = {DEBUG: Symbol("debug"),INFO: Symbol("info"),WARN: Symbol("warn"),ERROR: Symbol("error"),
};function log(message, level) {switch (level) {case LOG_LEVEL.DEBUG:console.debug(message);break;case LOG_LEVEL.ERROR:console.error(message);break;// ...}
}

3. 实现类的私有成员,用于模拟私有属性/方法;

const _items = Symbol("stackItems");class Stack {constructor() {this[_items] = [];}push(item) {this[_items].push(item);}pop() {return this[_items].pop();}
}const stack = new Stack();
stack.push(1);
console.log(stack._items); // undefined

4. 定义Well-known Symbols

JavaScript内置了一些Symbol值,称为Well-known Symbols,用于改变语言内部行为。

// 自定义对象的迭代行为
const myIterable = {[Symbol.iterator]: function* () {yield 1;yield 2;yield 3;},
};console.log([...myIterable]); // [1, 2, 3]// 自定义对象的toString标签
class MyClass {get [Symbol.toStringTag]() {return "MyClass";}
}console.log(new MyClass().toString()); // "[object MyClass]"

5. 全局Symbol注册表

可以通过Symbol.for()和Symbol.keyFor()在全局Symbol注册表中创建和查找Symbol。

// 从全局注册表中获取Symbol,不存在则创建
const globalSym1 = Symbol.for('global');
const globalSym2 = Symbol.for('global');console.log(globalSym1 === globalSym2); // true// 获取Symbol的key
console.log(Symbol.keyFor(globalSym1)); // "global"

6. 注意事项

1. Symbol不能使用new操作符,它不是构造函数;

2. Symbol值不能与其他类型的值进行运算;

3. Symbol值可以显式转换为字符串或布尔值;

4. 使用Object.getOwnPropertySymbols()可以获取对象的所有Symbol属性;

7. 总结

Symbol的主要用途是创建唯一标识符,避免命名冲突,特别适合用于:

1. 对象属性的唯一键名;

2. 定义私有属性;

3. 定义常量;

4. 修改内置对象的行为;

在现代JavaScript开发中,Symbol已经成为实现元编程和解决命名冲突的重要工具。

http://www.dtcms.com/wzjs/123601.html

相关文章:

  • 网站建设中的多语言翻译如何实现重庆seo论
  • 店名注册查询官网seo提升排名技巧
  • 营销策划的流程杭州seo排名优化
  • 电脑做服务器上传网站泰安短视频seo
  • 网站开发必用代码国内最近的新闻大事
  • 怎么做网站扫描互联网营销的方式有哪些
  • 网站建设里程碑南宁seo推广公司
  • 东莞网站优化seo标题优化
  • 住宿和餐饮网站建设的推广seo按照搜索引擎的
  • 网站制作过程合理的步骤是百度关键词工具入口
  • 中国风网站模板下载seo攻略
  • 外贸购物网站制作百度指数查询排行榜
  • 免费咨询医生回答西安优化网站公司
  • 凡科免费个人做网站有弊吗淘宝推广引流方法有哪些
  • 网站做著作权网络营销类型
  • 的网站设计案例aso推广
  • 肉菜配送网站建设b2c有哪些电商平台
  • 做任务的网站源码宁波seo外包平台
  • 公司网站续费帐怎么做360建站和凡科哪个好
  • HTML做网站的书籍windows优化大师在哪里
  • 杏坛网站建设网站怎样优化文章关键词
  • 室内设计公司排名十强seo网站结构优化的方法
  • 本地如何安装wordpressseo排名怎么看
  • 怎么制作一个网站推广普通话内容
  • 公安部的网站备案好搜网
  • 373网站怎么做这样的网站太原关键词优化服务
  • 河南亿元建设有限公司公司网站线上商城推广软文
  • 网业设计公司seo营销
  • 重庆造价信息网seo 推广服务
  • 新化网站建设seo3的空间构型