返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScrip如何创建常量
  • 400
分享到

JavaScrip如何创建常量

2024-04-02 19:04:59 400人浏览 八月长安
摘要

这篇文章主要介绍了JavaScrip如何创建常量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。所谓常量即只能读取不能编辑(删除,修改)的变量

这篇文章主要介绍了JavaScrip如何创建常量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

所谓常量即只能读取不能编辑(删除,修改)的变量。

js并没有原始的常量说法(即自定义的,原生态的),但是可以用一些偏僻的路子去创建。

1:const es6中的声明关键词。

JavaScrip如何创建常量

上面声明了两个变量,当执行修改操作时就将报错。从某种程度上来说,const是可以创建变量(基本类型)的。但是对引用类型就捉襟见肘。

JavaScrip如何创建常量

当声明的变量是一个引用类型时即对象,对对象的操作(删除,修改,添加)都是可以进行的。

2:Object 方法(defineProperty,seal,freeze)实现

1) Object.defineProperty:   该方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。   

JavaScrip如何创建常量

采用上述方法之后后续对a的修改功能就失效了,虽然修改功能不能正常执行, 但是删除功能却还是可以照常进行。

JavaScrip如何创建常量

JavaScrip如何创建常量

删除之后继续添加a属性时,a又变成可改的了。上述只是将a属性的可写属性改了,还有一个configurable属性可以进行设置。writable属性只是将对应的属性变更为不可直接更改,但是可以走小路(先删除在添加)。

JavaScrip如何创建常量

到此属性a就算定下来了,及不能修改,也不能删除。

但是,新的风暴有出现了。。。a虽然定下来了,但对于TEST_D这个变量来说,还没有结束。。。

JavaScrip如何创建常量

虽然属性a不能变动了,但是并不影响对其他属性的操作,比如b,s,u啊的,当然针对这些属性也可以像上述方式一样将其余属性的描述符,但是还是不能解决对TEST_D的扩展。

2) Object.preventExtensions:  该方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。 查看详情

JavaScrip如何创建常量

通过该方法就可以将对象设置为不可扩展了,即不可添加新属性了,这样这个变量就不能被修改了。

3)Object.seal:让一个对象密封并返回被密封之后的对象,新对象将变得不可扩展,即不能添加新的属性但是可以修改原本可写状态的属性

JavaScrip如何创建常量

利用上述两种方法循环使用是可以去创建常量的,但是比较复杂,而且当对象比较大的时候,代码量会比较大。Object.seal()可以简化这个过程。这个方法可以将对象变得不可扩展,属性不可删除。在此基础上在将对象的所有属性的描述符writable改为false就能得到我们要的变量了,即所谓常量。

4) Object.freeze:  该方法可以冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象。

Object.freeze方法是在seal基础上在将所有属性的描述符writable改为false。

JavaScrip如何创建常量

但是当变量的属性值又为对象时,及下列情况:

JavaScrip如何创建常量

对于user属性而言,他的值是还是可以更改的,这个时候就得对他也进行冻结。

JavaScrip如何创建常量


function freezeObj(obj) {
 Object.freeze(obj);
 Object.keys(obj).forEach(key => {
 if (typeof obj[key] === 'object') {
  freezeObj(obj[key])
 }
 })
}

即:当存在多重对象时,需要循环调用冻结方法。

 3: 闭包

const USER = (() => {
 const USER = {
 name: 'evening',
 gender: 'M'
 }
 return {
 get(name){
  return user[name]
 }
 }
})()
USER.get('name')

闭包用了比较隐秘的方法,将真正的对象原型保存在内存中而且不会被回收,变相的将USER这个变量‘保护'起来,并且提供访问的接口,但是不提供修改的接口。

感谢你能够认真阅读完这篇文章,希望小编分享的“JavaScrip如何创建常量”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网JavaScript频道,更多相关知识等着你来学习!

--结束END--

本文标题: JavaScrip如何创建常量

本文链接: https://lsjlt.com/news/72771.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScrip如何创建常量
    这篇文章主要介绍了JavaScrip如何创建常量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。所谓常量即只能读取不能编辑(删除,修改)的变量...
    99+
    2024-04-02
  • JS ES5创建常量详解
    目录前言ES 5 创建常量Object.defineProperty 的基础用法创建常量常量居然可以修改值?兼容性前言 ES6 刚推出的时候,let和const应该是大多数人学习ES...
    99+
    2024-04-02
  • 创建和获取 PHP 类常量
    本文将查看多个代码示例,这些示例将教你如何创建 PHP 类常量:const 关键字、访问修饰符和 final 关键字。你还将学习如何使用静态变量模拟常量。 在 PHP 中使用 const 关键字创...
    99+
    2024-02-27
  • 在JavaScript中如何创建变量
    这篇文章主要介绍了在JavaScript中如何创建变量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。声明(创建) JavaScript 变量...
    99+
    2024-04-02
  • python如何创建可变变量
    这篇文章主要介绍了python如何创建可变变量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、可以使用字典来完成此操作。字典是键和值的存储。>>>&nbs...
    99+
    2023-06-20
  • javascrip如何t操作元素
    小编给大家分享一下javascrip如何t操作元素,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!获取元素方法一可以使用内置对象d...
    99+
    2024-04-02
  • javascrip如何实现弹出框
    小编给大家分享一下javascrip如何实现弹出框,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在js中,可以使用confirm方法弹出是否弹出框,语法格式为“c...
    99+
    2023-06-15
  • 如何创建高质量移动网站
    这篇文章主要讲解了“如何创建高质量移动网站”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何创建高质量移动网站”吧!1、重点建立移动web网页现在有很多公司都在招兵买马组建app开发团队,认...
    99+
    2023-06-10
  • shell脚本如何批量创建用户
    小编给大家分享一下shell脚本如何批量创建用户,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!shell脚本批量创建用户基本操作案例:批量创建user01 ~ u...
    99+
    2023-06-29
  • 如何在Java创建一个String变量
    如何在Java创建一个String变量?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在java中,有两种创建String类型变量的方式:String str01=...
    99+
    2023-05-31
    string 变量 java
  • 如何用bat批量创建文件夹
    本篇内容主要讲解“如何用bat批量创建文件夹”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用bat批量创建文件夹”吧!分别创建1 2 3 等3个文件的几种方法 创建,1 2 3 三个文件的几...
    99+
    2023-06-09
  • 如何在TensorFlow中创建一个张量
    在 TensorFlow 中,可以使用 tf.constant() 函数创建一个张量。示例如下: import tensorflow...
    99+
    2024-03-01
    TensorFlow
  • Torch中如何创建和操作张量
    在Torch中,可以使用torch.Tensor类来创建张量。张量可以通过传递一个列表、元组或numpy数组来初始化。例如: imp...
    99+
    2024-04-02
  • linux命令行如何批量创建目录
    这篇文章将为大家详细讲解有关linux命令行如何批量创建目录,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。linux命令行批量创建目录详解以前一直用-p创建目录链,觉得很方便了。在空目录/opt/app/...
    99+
    2023-06-09
  • JavaScrip如何安全使用PaymentRequestAPI详解
    目录引言Payment Request API浏览器支持如何创建PaymentRequest对象How to use the paymentMethods par...
    99+
    2022-11-13
    JavaScrip Payment Request API Payment Request API 安全
  • 如何创建CSS
    这篇文章主要为大家展示了“如何创建CSS”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何创建CSS”这篇文章吧。如何插入样式表插入样式表的方法有三种:1.外部...
    99+
    2024-04-02
  • javabean如何创建
    要创建一个JavaBean,可以按照以下步骤进行:1. 创建一个Java类,类名按照标准的命名规范,应该以大写字母开头,并且应该包含...
    99+
    2023-09-27
    javabean
  • 如何创建html
    HTML(超文本标记语言)是用于创建网站的基本构建块之一。在今天的数字世界中,拥有一个网站可以让您向全世界展示自己的声音、品牌或产品。创建HTML不仅是一项令人兴奋的工作,也是一项值得学习的技能。在本文中,我们将介绍一些简单的步骤,帮助您了...
    99+
    2023-05-14
  • 如何创建Guid
    这篇文章主要介绍了如何创建Guid,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Set TypeLib = CreateObject("...
    99+
    2023-06-08
  • JS中如何利用字面量创建对象
    本篇内容介绍了“JS中如何利用字面量创建对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是字面量字面...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作