Js中的枚举

原文见

Js中的枚举


在JavaScript目前的版本中,没有枚举这个概念(当然,ECMA-262第三版中已经将enum作为关键字保留)。
然而,如同JavaScript中没有class一样,但我们仍然可以通过间接的方式——JSON来实现它。

  如下,我们来定义Week的枚举:
        if(typeof WeekDay == "undefined"){
            var WeekDay = {};
            WeekDay.Sunday = 0;
            WeekDay.Monday = 1;
            WeekDay.Tuesday = 2;
            WeekDay.Wedesay = 3;
            WeekDay.Thursday = 4;
            WeekDay.Friday = 5;
            WeekDay.Saturday = 6;
        }

  测试如下:
            alert(WeekDay.Monday);  // -----> Output: 1

 
  当然,我们有更为直观的方式。以定义DOM文档节点类型为例,定义方式如下:
        if(typeof Node == "undefined"){
            var Node = {
                ELEMENT_NODE: 1,
                ATTRIBUTE_NODE: 2,
                TEXT_NODE: 3,
                CDATA_SECTION_NODE: 4,
                ENTITY_REFERENCE_NODE: 5,
                ENTITY_NODE: 6,
                PROCESSING_INSTRUCTION_NODE: 7,
                COMMENT_NODE: 8,
                DOCUMENT_NODE: 9,
                DOCUMENT_TYPE_NODE: 10,
                DOCUMENT_FRAGEMENT_NODE: 11,
                NOTATION_NODE: 12
            }
        }

   

    测试如下:

       alert(document.nodeType == Node.DOCUMENT_NODE);  // -----> Output: true

 

    说明,以上Node定义可作为纠正IE不支持DOM节点类型常量用(其他主流浏览器均支持)。

 

  与类C语言类似,以上2个例子的枚举对应属性值均为整形。你可能想到,难道还能定义成别的类型?

   要回答这个问题,得先知道咱们这个枚举实现的原理。前面说到,这里是用JSON来实现的,而JSON可以使用任何类型的值!

   所以,Js中的枚举可以是任何类型的值。以下以String类型为例:

 

        if(typeof Color == "undefined"){
            var Color = {
                Color1: 'red',
                Color2: 'green',
                Color3: 'white',
                Color4: 'black'
            }
        }

  测试如下:

        alert(Color.Color1);  // -----> Output: red

  以更为复杂的类型来定义一个PersonList枚举如下:

 

        if(typeof PersonList == "undefined"){
            var PersonList = {
                ZhangSan: {
                    Id: 1,
                    Name: 'ZhangSan',
                    Gender: 'man'
                },
                LiSi: {
                    Id: 2,
                    Name: 'LiSi',
                    Gender: 'woman'
                },
                ZhaoWu: {
                    Id: 3,
                    Name: 'ZhaoWu',
                    Gender: 'man'
                }
            }
        }

内容概要:本文详细介绍了一个基于MATLAB的双向长短期记忆网络(BiLSTM)在轴承剩余寿命预测中的应用项目。项目通过采集振动信号并进行数据预处理、特征提取和标准化,利用滑动窗口技术构建输入序列,结合归一化的剩余寿命标签,训练BiLSTM回归模型,实现对轴承退化过程的高精度预测。文章涵盖从数据生成、模型构建、训练优化、评估可视化到GUI界面设计的全流程,并提供了完整的代码实现与部署方案。模型结合了深度学习与信号处理技术,具备良好的泛化能力和工程可移植性,适用于多种工业场景。;适合人群:具备一定MATLAB编程基础,熟悉机器学习或深度学习基本概念的科研人员、工程技术人员及高校研究生;从事工业设备状态监测、故障诊断与预测性维护相关工作的从业者。;使用场景及目标:①实现对高端数控机床、风力发电机、轨道交通等设备中轴承的剩余寿命预测,支持预测性维护决策;②构建可复用的MATLAB深度学习预测框架,用于旋转机械的健康管理;③通过GUI交互界面进行数据加载、模型训练、评估与预测,提升工程应用效率。;阅读建议:此资源以实际工程项目为导向,强调从理论到实践的完整闭环。建议读者结合提供的完整代码进行实操演练,重点关注数据预处理与特征构造、BiLSTM网络设计、训练策略优化及GUI实现逻辑。在学习过程中,应注重理解模型在不同工况下的适应性与部署时的鲁棒性问题,并尝试在真实数据上进行迁移验证,以深化对深度学习在工业预测中应用的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值