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

建设工程造价管理总站网站个人网站备案名称填写

建设工程造价管理总站网站,个人网站备案名称填写,我国的跨境电商平台有哪些,哈尔滨网络seo公司深入浅出JavaScript 对象的数据属性:从基础到实践 在 JavaScript 中,对象是数据结构的核心。而对象的“属性”则是构成其功能与行为的基本单元。今天,我们将深入探讨 JavaScript 对象的 数据属性(Data Properties)&am…

深入浅出JavaScript 对象的数据属性:从基础到实践

在 JavaScript 中,对象是数据结构的核心。而对象的“属性”则是构成其功能与行为的基本单元。今天,我们将深入探讨 JavaScript 对象的 数据属性(Data Properties),理解它们的特性、定义方式以及实际应用。


一、什么是数据属性?

数据属性是对象中存储数据值的基本属性类型。它们直接保存值,并通过四个特性(描述符)控制属性的行为。与之相对的是 访问器属性(Accessor Properties),后者通过 getset 方法间接操作值。我们先聚焦于数据属性。

示例:

const person = {name: "Alice", // 数据属性age: 25       // 数据属性
};

在上面的例子中,nameage 是数据属性,它们的值直接存储在对象中。


二、数据属性的四个特性

JavaScript 的数据属性由以下四个特性(描述符)定义:

1. [[Value]]
  • 作用:存储属性的值。
  • 默认值undefined
  • 示例
    const obj = {};
    Object.defineProperty(obj, "key", {value: "Hello World"
    });
    console.log(obj.key); // 输出 "Hello World"
    
2. [[Writable]]
  • 作用:控制属性值是否可修改。
  • 默认值true
  • 示例
    const obj = {};
    Object.defineProperty(obj, "key", {value: "Initial",writable: false // 设置为不可写
    });
    obj.key = "New Value"; // 尝试修改(静默失败)
    console.log(obj.key); // 输出 "Initial"
    
    注意:在严格模式下,修改不可写属性会抛出错误。
3. [[Enumerable]]
  • 作用:决定属性是否可被枚举(例如在 for...in 循环或 Object.keys() 中)。
  • 默认值true
  • 示例
    const obj = {};
    Object.defineProperty(obj, "hiddenKey", {value: "Secret",enumerable: false // 设置为不可枚举
    });
    for (let key in obj) {console.log(key); // 不会输出 "hiddenKey"
    }
    
4. [[Configurable]]
  • 作用:控制属性是否可被删除或修改描述符。
  • 默认值true
  • 示例
    const obj = {};
    Object.defineProperty(obj, "lockedKey", {value: "Locked",configurable: false // 设置为不可配置
    });
    delete obj.lockedKey; // 尝试删除(静默失败)
    console.log(obj.lockedKey); // 输出 "Locked"
    

三、如何定义和修改数据属性?

1. 直接赋值

当通过字面量或点语法定义属性时,所有特性默认为 true

const obj = {key: "Value" // [[Value]]: "Value", [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true
};
2. Object.defineProperty()

通过 Object.defineProperty() 方法可以精确控制属性的特性。

const obj = {};
Object.defineProperty(obj, "key", {value: "Custom Value",writable: false,enumerable: true,configurable: false
});
3. Object.defineProperties()

一次性定义多个属性:

const obj = {};
Object.defineProperties(obj, {prop1: {value: 1,writable: true},prop2: {value: 2,writable: false}
});

四、数据属性的实际应用场景

1. 保护关键属性

通过设置 writable: falseconfigurable: false,防止属性被意外修改或删除。

const config = {};
Object.defineProperty(config, "API_KEY", {value: "123456",writable: false,configurable: false
});
2. 隐藏内部状态

将敏感属性设为不可枚举(enumerable: false),避免暴露给外部。

const user = {username: "Alice"
};
Object.defineProperty(user, "password", {value: "secret123",enumerable: false
});
console.log(Object.keys(user)); // 输出 ["username"]
3. 优化性能

通过设置不可变属性,减少不必要的计算。

const mathConstants = {};
Object.defineProperty(mathConstants, "PI", {value: 3.14159265359,writable: false,configurable: false
});

五、如何查看属性特性?

使用 Object.getOwnPropertyDescriptor() 可以获取属性的描述符信息:

const obj = { key: "Value" };
const descriptor = Object.getOwnPropertyDescriptor(obj, "key");
console.log(descriptor);
/*
输出:
{value: "Value",writable: true,enumerable: true,configurable: true
}
*/

六、常见误区与注意事项

  1. 默认值陷阱
    如果使用 Object.defineProperty() 时未显式设置特性,它们的默认值为 false(如 writableenumerableconfigurable)。

    const obj = {};
    Object.defineProperty(obj, "key", { value: "Value" });
    console.log(obj.key); // 输出 "Value"
    obj.key = "New Value"; // 修改失败
    
  2. 不可逆的 configurable: false
    一旦将属性的 configurable 设置为 false,后续无法再修改该属性的描述符或将其删除。

  3. delete 操作的限制
    对于 configurable: false 的属性,delete 操作会失败(在非严格模式下静默失败,在严格模式下抛出错误)。


七、总结

JavaScript 的数据属性是对象行为的核心控制点。通过 [[Value]][[Writable]][[Enumerable]][[Configurable]] 四个特性,我们可以精确管理属性的读写、可见性和生命周期。掌握这些特性不仅能提升代码的健壮性,还能帮助我们在设计模块、保护数据隐私时游刃有余。

http://www.yayakq.cn/news/201883/

相关文章:

  • 做阿里网站的分录网页的视频怎么下载到本地
  • 做网站每个月可以赚多少郑州网站制作生产厂商定制
  • 最好的开发网站有哪些怎样注册网站中文域名
  • 万网做的网站咋样浦口区教育局网站集约化建设
  • 网站seo 文章转载 修改标题网站首页效果图
  • 南京浦口网站建设网站点击率原因
  • 深圳网站域名注册重庆网站建设设计公司信息
  • 做国外网站需要多少钱网页设计模板html代码百度云
  • 快速做网站软件建设项目公告网站
  • 巩义网站建设方式优化wordpress 远程图片本地化
  • 上海网站建设中网站被降权的表现
  • 站长之家上海办公室装修设计公司
  • 做那个的网站wordpress直播播放器
  • 福州网站建设个人兼职聊城seo培训
  • 网站模板是什么黑群晖Wordpress
  • 购物网站功能介绍郑州做网站需要多少钱
  • 广州软件网站开发wordpress增加访问速度
  • 网站备案ip查询系统常用的cms建站系统
  • 网站开发与服务合同青岛网站开发费用
  • 网站备案基础知识凡科做网站的模版在哪儿找
  • 一般网站的服务器拓者设计吧邀请码免费
  • 自己做采集电影网站网站营销推广策划方案
  • 电脑怎么用别人的网站吗北京建网站公司飞沐
  • 网页编成网站网站建设公司发展理念
  • 高端网站设计平台百度百科优化排名
  • 网站app怎么做的免费做网站的网址有哪些
  • 做网站域名还重要吗云校招企业服务平台
  • ui设计网站做护肤品好的网站好
  • 网页制作工具可以发布网站吗服务器架构做网站
  • 网站怎么做的支付做小程序的公司