zoukankan      html  css  js  c++  java
  • es6 中的 symbol

    symbol 的引入是为了解决对象中的属性名冲突的问题

    使用symbol() 函数生成的变量值不与任何的变量值相等,  所有用改变量的值做属性名是不会冲突的

    symbol 可以转化为字符串, 可以转化为 boolean. 其余的运算不能参与

    在对象中使用 symbol 必须使用方括号, 不能使用点, 引用也是如此

    看来 symbol  只是生成一个不相等值的函数, 

    symbol 不能被普通的方法遍历

    Reflect.ownKeys 可以获取到对象中的 symbol 的属性

    Object.getOwnPropertyNames(obj)  可以获取 symbol

    symbol的不能被普通的方法遍历可以利用做私有属性名

    Symbol.for

    可以看成 一个缓存堆, 如果这个堆中存在一个值, 就直接拿出来使用, 否则就是创建一个返回,  注意其值的获取方式是其描述是否是一致的

     

    Symbol.keys

    返回一个symbol 变量的描述, 只能是已经登记的(使用 symbol.for的)

    语言内置的函数, 只是由字符串变为了 symbol的方式来引用,为的是不被冲突, 例如数组的某一个方法名 . 例如 Array[Symbol.hasinstance]

    总结

      没发现 symbol 有什么必需的, 其作用就是生出一个不可能相同的值. 

      感觉真是饶了一个弯子, symbol 可以保证一个对象中的不被冲突, 但是变量名怎么保证不冲突?? 

     

  • 相关阅读:
    Keras实例教程(2)
    Keras实例教程(1)
    tf.nn.l2_loss()的用法
    在tensorflow中使用batch normalization
    Tensorflow的LRN是怎么做的
    CNN卷积中多通道卷积的参数问题
    caffe学习网站
    交叉熵反向求导计算过程
    矩阵求导
    循环神经网络(RNN)模型与前向反向传播算法
  • 原文地址:https://www.cnblogs.com/cgdx/p/10754854.html
Copyright © 2011-2022 走看看