当前位置: 首页 > news >正文

JS属性描述符

var myObject = {
            a:2
        };
        Object.getOwnpropertyDescriptor(myObject,"a");
        {
            value:2,
            writable:true,
            emumerable:true,
            configurable:true
        }

这段代码中的属性描述符不仅只有2,还有writable(可写)、enumerable(可枚举)、configurable(可配置)三种

 

在创建普通属性时属性描述符会使用默认值,我们也可以使用 Object.defineProperty(...)添加一个新属性或者修改一个已有属性(如果是configurable)并对特性进行设置

代码示例:

var myObject = {};
        Object.defineProperty(myObject,"a",{
            value:2,
            writable:true,
            configurable:true,
            emumerable:true
        });
        console.log(myObject.a);//2

 

下面是对这三个属性描述符的介绍:

1)writable:决定是否可以修改属性的值

var myObject = {};
        Object.defineProperty(myObject,"a",{
            value:2,
            writable:false,
            configurable:true,
            emumerable:true
        });
        myObject.a = 3;
        console.log(myObject.a);//2

解析:writable:false 可以看作为属性不可改变,在严格模式("use strict";)下,引擎会抛出TypeError的异常,这表示我们无法修改一个不可写的属性

 

2)configurable:只要属性是可配置的,就可以使用 defineProperty(...)方法来修改属性描述符

注意!!

a)在false情况下,如果修改,不管是不是严格模式,都会抛出TypeError的错误

b)在这种情况下,我们仍可以将可写性的状态由true改为false

c)delete属性也会被禁止(delete myObject.a;)

 

3)emumerable:可枚举,如果将它设置为false,则这个属性将不会出现在枚举中,但可以正常访问他

 

  

  

 

 

 

 

转载于:https://www.cnblogs.com/wccc/p/6727185.html

相关文章:

  • 使用C#创建SQL Server的存储过程
  • java对接申通下单接口示例代码
  • C#中Out和Ref參数修饰符
  • C#的6种常用集合类大比拼
  • duwamish7,petshop 1.5 3.0 这些要好好看看
  • 配置管理工具Puppet 安装和测试(一)
  • D3D中粒子效果实现示例
  • Oracle GoldenGate (ogg) 11.2.1.0.20 是最后一个支持oracle db 10g的 ogg版本号
  • adapter facade 和 proxy
  • 好用的在线web页面测试,移动页面测试工具webpagetest使用图文教程
  • 安装 MariaDB
  • dotText源码阅读(4)--DTO和数据访问
  • Java之JDBC学习
  • 上海:法制宣传上公交 移动电视受好评
  • 基于FPGA的XPT2046触摸控制器设计
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【个人向】《HTTP图解》阅后小结
  • 【技术性】Search知识
  • Angular数据绑定机制
  • Java 内存分配及垃圾回收机制初探
  • Java 网络编程(2):UDP 的使用
  • JavaScript 基本功--面试宝典
  • react 代码优化(一) ——事件处理
  • spring boot下thymeleaf全局静态变量配置
  • TCP拥塞控制
  • 对象管理器(defineProperty)学习笔记
  • 京东美团研发面经
  • 浏览器缓存机制分析
  • 浅谈Golang中select的用法
  • 深度学习中的信息论知识详解
  • 微服务框架lagom
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​比特币大跌的 2 个原因
  • #单片机(TB6600驱动42步进电机)
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (arch)linux 转换文件编码格式
  • (zhuan) 一些RL的文献(及笔记)
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (规划)24届春招和25届暑假实习路线准备规划
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (原)本想说脏话,奈何已放下
  • (转)fock函数详解
  • *1 计算机基础和操作系统基础及几大协议
  • ./configure,make,make install的作用(转)
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net 6.0 处理跨域的方式
  • .net core开源商城系统源码,支持可视化布局小程序
  • .net 获取url的方法
  • .net 简单实现MD5
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .Net6使用WebSocket与前端进行通信
  • .NET多线程执行函数