美文网首页
ES6(六)符号与符号属性2

ES6(六)符号与符号属性2

作者: 蒋小花_4b6c | 来源:发表于2020-05-20 12:48 被阅读0次

1.符号值的转换

2.检索符号属性

3.使用知名符号暴露内部方法

(跳过)

符号值的转换

符号类型在进行转换时非常不灵活,因为其他类型缺乏与符号值的合理等价,尤其是符号值无法 被转换为字符串值或数值。

因此将符号作为属性所达成的效果,是其他类型所无法替代的。

本章之前的例子使用了 console.log() 来展示符号值的输出,

能这么做是由于自动调用了符号的 String() 方法来产生输出。你也可以直接调用 String() 方法来获取相同结果,

let uid = Symbol.for("uid"),

desc = String(uid);

console.log(desc); // Symbol(uid)

 String() 方法调用了 uid.toString() 来获取符号的字符串描述信息。

但若你想直接将符号 转换为字符串,则会引发错误

let uid = Symbol.for("uid"),

desc = uid + ""; // 错误

不能将符号转换为数值,对符号使用所有数学运算符都会引发错误

let uid = Symbol.for("uid"),

sum = uid / 1;  // 引发错误!

无论对符号使用哪种数学运算符都会导致错误,但使用逻辑运算符则不会,

因为符号值在逻辑运算中会被认为等价于true (就像 JS 中其他的非空值那样)

检索符号属性

Object.keys()  与 Object.getOwnPropertyNames() 方法可以检索对象的所有属性名称,

前者返回所有的可枚举属性名称,而后者则返回所有属性名称 而无视其是否可枚举。

两者都 不能返回符号类型的属性

ES6 新增了Object.getOwnPropertySymbols() 方法,可以检索对象的符号类型属性。

let uid = Symbol.for("uid");

let object = {

    [uid]: "12345"

};

let symbols = Object.getOwnPropertySymbols(object);

console.log(symbols.length); // 1

console.log(symbols[0]); //Symbol(uid)

console.log(object[symbols[0]]); // 12345

使用知名符号暴露内部方法

相关文章

  • ES6(六)符号与符号属性2

    1.符号值的转换 2.检索符号属性 3.使用知名符号暴露内部方法 (跳过) 符号值的转换 符号类型在进行转换时非常...

  • 六: ES6 符号 Symbol

    前言 该部分为书籍 深入理解ES6 第六章(符号与符号属性)笔记 创建符号值 符号没有字面量形式, 这在 JS 的...

  • ES6(六)符号与符号属性1

    在 JS 已有的基本类型(字符串、数值、布尔类型、 null 与 undefined ) ES6 引入 了一种新的...

  • ES6之符号与符号属性

    引 在 JS 已有的基本类型(字符串、数值、布尔类型、 null 与 undefined )之外, ES6 引入了...

  • ES6 符号

    普通符号 es6 规定,现在属性名除了是字符串之外,还有了一个属性名 symbol 符号是 ES6 新增的一个数据...

  • JavaScript 基本(二)symbol类型

    symbol是ES6新增的类型。符号是原始值,且符号实例是唯一的、不可变的。符号的用途是确保对象属性使用唯一标识符...

  • 深入理解ES6--6.符号与符号属性

    主要知识点:创建符号值、使用符号值、共享符号值、符号值转换。检索符号值属性以及知名符号 1. Symbol基础 1...

  • 编译原理系列之八 符号表

    符号表 符号表用来体现作用域与可见性信息 符号表的作用:① 收集符号属性;(词法分析)② 上下文语义的合法性检查的...

  • [ES6] 符号

    普通符号 符号是ES6新增的一个数据类型,它通过函数Symbol(符号名)来创建 符号设计的初衷,是为了给对象设置...

  • 2019-07-23

    day18 操作系统正则符号/grep 1.系统通配符号2.系统正则符号 知识回顾: 1.系统文件属性(文件类型 ...

网友评论

      本文标题:ES6(六)符号与符号属性2

      本文链接:https://www.haomeiwen.com/subject/zvfbohtx.html