《JavaScript高级步伐计划》读书条记 30

[复制链接]
发表于 2025-12-6 06:42:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
感谢点赞、关注和收藏!
上一篇天生器,这一篇开始先容对象,留意不是相亲。
明确对象

             ECMA-262 将对象界说为一组属性的无序聚集。严酷来说,这意味着对象就是一组没有特定序次的值。对象的每个属性或方法都由一个名称来标识,这个名称映射到一个值。正由于云云(以及其他还未讨论的缘故起因),可以把 ECMAScript 的对象想象成一张散列表,此中的内容就是一组名/值对,值可以是数据大概函数。            创建对象应该是我们在一样寻常工作中最常用的了,不多表明,直接举两个例子:
  1. let person = new Object();
  2. person.name = "Nicholas";
  3. person.age = 29;
  4. person.job = "Software Engineer";
  5. person.sayName = function() {
  6. console.log(this.name);
  7. };
  8. // 上面等同于下面
  9. let person = {
  10. name: "Nicholas",
  11. age: 29,
  12. job: "Software Engineer",
  13. sayName() {
  14. console.log(this.name);
  15. }
  16. };
复制代码
属性的范例

          此范例非彼范例,也就是这里的范例指的不是之前说的根本数据范例大概引用范例,而是夸大属性:
  1. 数据属性

             数据属性包罗一个生存数据值的位置。值会从这个位置读取,也会写入到这个位置。数据属性有 4 个特性形貌它们的活动。      
       
  • [[Configurable]]:体现属性是否可以通过 delete 删除并重新界说,是否可以修改它的特性,以及是否可以把它改为访问器属性。默认环境下,全部直接界说在对象上的属性的这个特性都是 true,如前面的例子所示。   
  • [[Enumerable]]:体现属性是否可以通过 for-in 循环返回。默认环境下,全部直接界说在对象上的属性的这个特性都是 true,如前面的例子所示。   
  • [[Writable]]:体现属性的值是否可以被修改。默认环境下,全部直接界说在对象上的属性的这个特性都是 true,如前面的例子所示。   
  • [[Value]]:包罗属性现实的值。这就是前面提到的谁人读取和写入属性值的位置。这个特性的默认值为 undefined。   
               要修改属性的默认特性,就必须利用 Object.defineProperty() 方法。这个方法吸取 3 个参数:要给其添加属性的对象、属性的名称和一个形貌符对象。末了一个参数,即形貌符对象上的属性可以包罗:configurable、enumerable、writable 和 value,跟相干特性的名称逐一对应。根据要修改的特性,可以设置此中一个或多个值。好比:   
  1. let person = {};
  2. Object.defineProperty(person, "name", {
  3. writable: false,
  4. value: "Nicholas"
  5. });
  6. console.log(person.name); // "Nicholas"
  7. person.name = "Greg";     // 在严格模式下,尝试修改只读属性的值会抛出错误。
  8. console.log(person.name); // "Nicholas"
复制代码
        在调用 Object.defineProperty()时,configurable、enumerable 和 writable 的值假如不指定,则都默以为 false。            2. 访问器属性

                 访问器属性不包罗数据值。相反,它们包罗一个获取(getter)函数和一个设置(setter)函数,不外这两个函数不是必须的。在读取访问器属性时,会调用获取函数,这个函数的责任就是返回一个有效的值。在写入访问器属性时,会调用设置函数并传入新值,这个函数必须决定对数据做出什么修改。访问器属性有 4 个特性形貌它们的活动。           
       
  • [[Configurable]]:体现属性是否可以通过 delete 删除并重新界说,是否可以
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表