iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript 对象新增方法defineProperty与keys的使用说明
  • 262
分享到

JavaScript 对象新增方法defineProperty与keys的使用说明

2024-04-02 19:04:59 262人浏览 泡泡鱼
摘要

目录一:Object.defineProperty() 1.1 参数说明1.2 第三个参数 descriptor 的说明1.3 实际使用1.3.1 wr

文章导读:

这篇文章给大家讲解在 ES5 中对象新增的两个常用方法:defineProperty(),keys(),

这两个方法可以让我们更方便的操作对象,获取对象属性,赋值修改等等操作,最重要的是,这些方法可以让我们设置无法修改对象属性值,下面跟我一起了解一下吧!

一:Object.defineProperty() 

   Object.defineProperty() 可以用来定义对象的新属性和修改属性值,设置属性值是否可修改(重点)等等,该方法共有三个参数

1.1 参数说明

Object.defineProperty( obj, prop, descriptor )
参数objpropdescriptor
含义要操作的对象名称对象中要操作的某个属性的名称这个参数有四个特性,该参数以对象形式书写,详细写法说明如下

1.2 第三个参数 descriptor 的说明

其参数以对象形式书写,其内部有四个特性,例如修改值的操作,设置是否可重写,设置是否可枚举,是否可修改特性等等......

1.3 实际使用

1.3.1 writable 特性

writeable 特性可以设置一个属性是否可被重写,true 为可重写,false 为不可重写,使用 defineProperty 新添加的属性默认为 false

    <script>
       var dog={
          'name':'旺财',
          'age':5
       }
       Object.defineProperty(dog,'sex',{
          value:'公',
          writable:false
       })
       dog.sex='母'    //更改属性值看其是否改变
       console.log(dog);
    </script>

可以看到我们虽然更改了 sex 的值,但是打印结果没有被更改 ,说明 writable : false 属性成功使其属性值不能重写,功能十分强大是不是!

注意事项:如果是使用 defineProperty 新添加的属性,那么 writable 默认为 false 不可修改,如果是本身就有的属性而去修改值,那其仍可以修改

1.3.2 enumerable 特性

enumerable 特性可以设置某个属性是否可被枚举,true 为可枚举,false 为不可枚举,使用 defineProperty 新添加的属性默认为 false

    <script>
        var dog={
            'name':'旺财',
            'age':5
        }
        Object.defineProperty(dog,'sex',{
            value:'公',
            enumerable:false
        })
        console.log(Object.keys(dog));
    </script>

可以看到我们遍历得不到设置过 enumerable:false 特性的属性 sex,证明了 false 不可枚举

注意事项:如果是使用 defineProperty 新添加的属性,那么 enumerable 默认为 false 不可枚举,如果是本身就有的属性而去修改值,那其仍可以枚举

1.3.3 configurable 特性

 configurable 特性可以设置某个属性是否可被修改(删除),true 为可修改,false 为不可修改,使用 defineProperty 新添加的属性默认为 false

configurable 特性的参数只能设置一次,第二次设置会无效!!

    <script>
        var dog={
            'name':'旺财',
            'age':5,
        }
        Object.defineProperty(dog,'sex',{
            value:'公',
            configurable : false
        })
        delete dog.sex
        console.log(dog);
    </script>

可以看到我们删除不了设置过 configurable:false 特性的属性 sex,证明了 false 不可修改

注意事项:如果是使用 defineProperty 新添加的属性,那么 configurable 默认为 false 不可修改,如果是本身就有的属性而去修改值,那其仍可以修改

二:Object.keys()

keys() 可以用来获取对象的属性名,参数为要操作的对象名称。其返回一个数组元素为属性名的新数组(故需要定义一个数组去接收)

Object.keys( obj )

    <script>
        var dog={
            'name':'旺财',
            'age':5,
            'sex':'公'
        }
        var arr=Object.keys(dog)
        console.log(arr);
    </script>

成功返回了对象的属性名称 

到此这篇关于javascript 对象新增方法 defineProperty 与 keys 的使用说明的文章就介绍到这了,更多相关js defineProperty与keys 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript 对象新增方法defineProperty与keys的使用说明

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript 对象新增方法defineProperty与keys的使用说明
    目录一:Object.defineProperty() 1.1 参数说明1.2 第三个参数 descriptor 的说明1.3 实际使用1.3.1 wr...
    99+
    2024-04-02
  • JavaScript字符串新增方法trim()的使用说明
    trim() 方法用于删除字符串两端的空白字符,并返回新的字符串。语法:```javascriptstring.tri&#...
    99+
    2023-08-09
    javascript
  • JavaScript 字符串新增方法 trim() 的使用说明
    目录一:trim() 方法的用法二:trim() 实际开发中的使用2.1 实战应用 2.1.1 未使用 trim 的表单提交 2.1.2&nb...
    99+
    2024-04-02
  • python中列表对象pop()方法的使用说明
    目录列表对象pop()方法的使用python中pop什么意思举个例子列表对象pop()方法的使用 pop() 方法用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。 ...
    99+
    2024-04-02
  • javascript中有哪些对象新增方法
    这篇文章将为大家详细讲解有关javascript中有哪些对象新增方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。javascript对象的新增方法:1、“Object....
    99+
    2024-04-02
  • SpringMVC中的Model对象用法说明
    模型对象的作用主要是保存数据,可以借助它们将数据带到前端。 常用的模型对象有以下几个: ModelAndView(顾名思义,模型和视图,既可以携带数据信息,也可以携带视图信息,常规用...
    99+
    2024-04-02
  • JS中的Map对象用法及说明
    目录JS中的Map对象JS中Map和普通对象Map对象Object对象Objects 和 maps 的比较总结JS中的Map对象 1.js创建map对象 var map = new ...
    99+
    2023-02-23
    JS中的Map对象 Map对象用法 Map对象说明
  • es6 number对象的新增方法怎么用
    本文小编为大家详细介绍“es6 number对象的新增方法怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6 number对象的新增方法怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。es6 num...
    99+
    2023-07-04
  • es6新增对象的实用方法总结
    目录一、属性的简写二、属性名表达式三、super关键字四、扩展运算符的应用五、属性的遍历六、对象新增的方法Object.is()Object.assign()Object.getOw...
    99+
    2024-04-02
  • 基于SpringAop中JoinPoint对象的使用说明
    JoinPoint 对象 JoinPoint对象封装了SpringAop中切面方法的信息,在切面方法中添加JoinPoint参数,就可以获取到封装了该方法信息的JoinPoint对象...
    99+
    2024-04-02
  • javascript中数组与对象的使用方法区别
    目录一、JS声明对象或数组二、数组”(array)和“对象”(object)两者都可以用来表示数据的集合。三、数组和对象的使用方法区别:(1)创建...
    99+
    2022-12-14
    js数组 js对象
  • es6 number对象的新增方法有哪些
    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。在 ES5 中,全局下的 isFinite () 和 isNaN () 两种方法存在类型转换,对最终的判断结果存在歧义。ES6 在 Number 对象上,...
    99+
    2022-11-22
    javascript ES6
  • feign post参数对象不加@RequestBody的使用说明
    目录feign post参数对象不加@RequestBody解决办法这里对比一下feign和原接口的参数使用@RequestParam、@RequestBody 的正确姿势背景详细情...
    99+
    2024-04-02
  • C++11之std::future对象的使用以及说明
    目录std::future介绍细节说明wait系列操作get操作时序图std::future使用总结std::future介绍 在前面几篇文章中基本都用到thread对象,它是C++...
    99+
    2023-02-28
    C++11 std::future std::future对象 std::future对象使用
  • es6新增的声明方法怎么用
    本文小编为大家详细介绍“es6新增的声明方法怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6新增的声明方法怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。新增声明方法:1、let,用于声明变量,语...
    99+
    2023-06-29
  • ES6新增的数组方法和对象有哪些
    这篇文章主要为大家展示了“ES6新增的数组方法和对象有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6新增的数组方法和对象有哪些”这篇文章吧。es6新增...
    99+
    2024-04-02
  • javascript对象的常用方法
    JavaScript是一种流行的编程语言,用于创建交互式网页和动态Web应用程序。其中最重要的部分是对象(object),它使程序员可以创建、存储和操作数据。在本文中,我们将深入探讨JavaScript对象的常用方法。创建对象在JavaSc...
    99+
    2023-05-14
  • JavaScript中windows.history对象的方法怎么使用
    这篇文章主要讲解了“JavaScript中windows.history对象的方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript...
    99+
    2024-04-02
  • es6对象增加新的属性怎么使用
    今天小编给大家分享一下es6对象增加新的属性怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。es6对象增加新的属性是“...
    99+
    2023-07-04
  • mybatis中使用not in与 in的写法说明
    目录使用not in与 in的写法in的用法not in的用法使用in查询时的注意事项当查询的参数只有一个时 当查询的参数有多个时使用not in与 in的写法 首先声明我...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作