zoukankan      html  css  js  c++  java
  • symbol

    1. 唯一值

            <script type="text/javascript">
                // bad
                // 1. 创建的属性会被 for-in 或 Object.keys() 枚举出来
                // 2. 一些库可能在将来会使用同样的方式,这会与你的代码发生冲突
                if (element.isMoving) {
                  smoothAnimations(element);
                }
                element.isMoving = true;
                
                // good
                if (element.__$jorendorff_animation_library$PLEASE_DO_NOT_USE_THIS_PROPERTY$isMoving__) {
                  smoothAnimations(element);
                }
                element.__$jorendorff_animation_library$PLEASE_DO_NOT_USE_THIS_PROPERTY$isMoving__ = true;
                
                // better
                var isMoving = Symbol("isMoving");
                
                ...
                
                if (element[isMoving]) {
                  smoothAnimations(element);
                }
                element[isMoving] = true;
            </script>

    2. 魔术字符串
    魔术字符串指的是在代码之中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。
    魔术字符串不利于修改和维护,风格良好的代码,应该尽量消除魔术字符串,改由含义清晰的变量代替。

            <script type="text/javascript">
                // bad
                const TYPE_AUDIO = 'AUDIO'
                const TYPE_VIDEO = 'VIDEO'
                const TYPE_IMAGE = 'IMAGE'
                
                // good
                const TYPE_AUDIO = Symbol()
                const TYPE_VIDEO = Symbol()
                const TYPE_IMAGE = Symbol()
                
                function handleFileResource(resource) {
                  switch(resource.type) {
                    case TYPE_AUDIO:
                      playAudio(resource)
                      break
                    case TYPE_VIDEO:
                      playVideo(resource)
                      break
                    case TYPE_IMAGE:
                      previewImage(resource)
                      break
                    default:
                      throw new Error('Unknown type of resource')
                  }
                }
            </script>

    3. 私有变量
    Symbol 也可以用于私有变量的实现。

            <script type="text/javascript">
                const Example = (function() {
                    var _private = Symbol('private');
                
                    class Example {
                        constructor() {
                          this[_private] = 'private';
                        }
                        getName() {
                          return this[_private];
                        }
                    }
                
                    return Example;
                })();
                
                var ex = new Example();
                
                console.log(ex.getName()); // private
                console.log(ex.name); // undefined
            </script>
  • 相关阅读:
    数据库字段包含反斜杠的查询处理
    sql中的日期时间处理
    查询时间的测试
    group by 和 聚合函数的使用
    比较版本号
    sql IIF函数的应用
    win10系统杀毒功能
    php性能的问题
    linux 下ab压力测试
    datatables的学习总结
  • 原文地址:https://www.cnblogs.com/wangxi01/p/11590134.html
Copyright © 2011-2022 走看看