首页 > 其他分享 >es6——js第7种数据类型symbol和es10新增属性description

es6——js第7种数据类型symbol和es10新增属性description

时间:2022-08-26 18:01:52浏览次数:65  
标签:es6 obj description Symbol 数据类型 let console symbol log

文章结构

  创建symbol的方式

  获取symbol的描述信息

  注意事项

    不能与其他数据类型进行运算

    值是唯一的?分情况!

    不能用for-in遍历

    可以使用Reflect.ownkeys来获取定义的对象的所有键名,从而来遍历对象

   应用场景

创建symbol方式

 

 1         let s = Symbol();
 2         console.log(s,typeof s);//Symbol() 'symbol'
 3 
 4         //传递一个字符串表示名,实际上s1和s2还是随机的,唯一的
 5         let s1 = Symbol('zhangsan');
 6         let s2 = Symbol('zhangsqan');
 7         console.log(s1 === s2);//false
 8         //第二种symbol.for创建们可以通过后面的标识符查询到,可以与后面的标识符一一对应
 9         let s3 = Symbol.for('zhangsan');
10         let s4 = Symbol.for('zhangsan');
11         console.log(s3 === s4);//true

获取symbol的描述信息

1 let s = Symbol('zhangsan');
2 console.log(s.description); // zhangsan

注意事项

不能与其他数据类型进行运算

1 let s5 = Symbol.for('1');
2 s5 = s5 + 1;// Cannot convert a Symbol value to a number

值是唯一的?分情况!

 1 let s1 = Symbol('zhangsan');
 2 let s2 = Symbol('zhangsan');
 3 let s3 = Symbol.for('zhangsan');
 4 let s4 = Symbol.for('zhangsan');
 5 /* 和 Symbol() 不同的是,用 Symbol.for() 方法创建的的 
 6 symbol 会被放入一个全局 symbol 注册表中。Symbol.for() 
 7 并不是每次都会创建一个新的 symbol,它会首先检查给定的 
 8 key 是否已经在注册表中了。假如是,则会直接返回上次存储
 9 的那个。否则,它会再新建一个。 */
10 console.log(s1 === s2); // false
11 console.log(s3 === s4); // true

不能用for-in遍历

 1 let obj = {};
 2 obj[Symbol("1")] = 1;
 3 obj[Symbol("2")] = 2;
 4 for (const key in obj) {
 5     if (Object.hasOwnProperty.call(obj, key)) {
 6         console.log(key); // 无输出,遍历不到
 7         const element = obj[key];
 8         console.log(element); // 无输出,遍历不到
 9     }
10 }

可以使用Reflect.ownKeys来获取定义的对象的所有键名,从而来遍历对象

1 let obj = {};
2 obj[Symbol("1")] = 1;
3 obj[Symbol("2")] = 2;
4 obj.a = 3;
5 const result = Reflect.ownKeys(obj);
6 console.log(result); // [ 'a', Symbol(1), Symbol(2) ]
7 for (const index of result) {
8     console.log(obj[index]); // 3 1 2
9 }

应用场景

 1 // 当我们需要向一个对象中添加方法时,如果我们不知道对象内部是怎么样的,如果直接添加可能会有命名冲突
 2 let obj = {
 3     up() {
 4         console.log("xiangshang");
 5     },
 6     down() {
 7         console.log("xiangxia");
 8     },
 9 };
10 
11 let symobj = {
12     up: Symbol(),
13     down: Symbol(),
14 };
15 
16 obj[symobj.up] = function() {
17     console.log("我是新添加的up方法");
18 };
19 
20 obj[symobj.down] = function() {
21     console.log("我是新添加的down方法");
22 };
23 
24 console.log(obj);
25 /* {
26   up: [Function: up],
27   down: [Function: down],
28   [Symbol()]: [Function (anonymous)],
29   [Symbol()]: [Function (anonymous)]
30 } */
31 obj[symobj.down](); // 我是新添加的down方法

 

标签:es6,obj,description,Symbol,数据类型,let,console,symbol,log
From: https://www.cnblogs.com/lzx-cm/p/16628256.html

相关文章

  • python基本数据类型
    python基本数据类型python基本数据类型有:整型,浮点型,布尔型,复数型,字符串,列表,元组,字典,集合。六大基本数据类型:①.Number(数字)②.String(字符串)③.List(列表)④.Tuple(元组)......
  • JS数据类型与BOM操作
    今日内容JS数据类型之布尔值(boolean)boolean相当于python里的boolpython中布尔值首字母是大写的 True False#0None''[]{}...为Falsejs中布尔值首字母是不需......
  • JS数据类型、流程控制、函数与BOM与DOM操作
    JS数据类型JS数据类型之布尔值1.布尔值(Boolean)在js中布尔值用用true和false来表示(都是小写)2.(空字符串)、0、null、undefined、NaN都是false2.1null表示这个变量......
  • JS数据类型、流程控制、函数、内置对象、BOM和DOM
    目录一、JS数据类型之布尔值二、JS数据类型之对象(object)1.对象之数组(相当于python中的列表)2.方法2.1.forEach2.2.map三、JS数据类型之自定义对象(object)1.自定义对象(相当......
  • JS数据类型与方法
    JS数据类型与方法JS数据类型之布尔值python布尔值(bool)TrueFalse:0,None,空字符(""),空列表([]),空字典({}),空元组()JS布尔值(boolean)true(不需要首字母大写)......
  • python3 的基础数据类型
    python有六种基本的数据类型,分别是:Numbers数字String字符串List列表Tuple元组Set集合(python3新增)Dictionary字典在这六个基本数据中可变数据类型为:list,set,dict......
  • es6的模块化
    es6的模块化import导入export导出es6的写法<scripttype='module'></script>一个内容如果需要导入必须先导出第一种写法export导出//对象constobj={u......
  • ArrayList集合存储基本数据类型
    ArrayList集合存储基本数据类型 如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”基本类型包装类byteByteshor......
  • ES6
    文件的导入导出exportdefault和export导出,import导入。补充:还有两个相似的:module.exports和exports(exports=module.exports)导出,require()导入与之区别是......
  • pytest系列——allure(四)之在测试用例添加描述(@allure.description())
    前言allure支持往测试报告中对测试用例添加非常详细的描述语用来描述测试用例详情;这对阅读测试报告的人来说非常的友好,可以清晰的知道每个测试用例的详情。allure添加描......