JavaScript 高级程序设计读书笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 高级程序设计读书笔记相关的知识,希望对你有一定的参考价值。

第6章 面向对象的程序设计

属性的类型

JS 中对象的属性有两种,数据属性和访问器属性(accessor property ),属性有其自身的特性(arrribute),可以理解为关于属性的属性。

数据属性包含4个特性,分别是[[Configurable]], [[Enumerable]], [[Writable]], [[Value]]。

使用 Object.defineProperty 修改属性描述符时,若该属性之前不存在,除了代码里指定的特性值,其他特性值默认将是 false, 举例如下:

let obj = {};
obj.name = ‘test‘;
Object.defineProperty(obj, ‘age‘, {
    writable: false
});
Object.getOwnPropertyDescriptor(obj, ‘age‘);
// 控制台输出信息如下:注意四个特性值均为 false
Object {value: undefined, writable: false, enumerable: false, configurable: false}

 访问器属性不能直接定义,必须使用 Object.defineProperty 来定义,包含4个特性,分别是[[Configurable]], [[Enumerable]], [[Get]], [[Set]]。试举例如下:

// 使用访问器属性的常见方式:设置一个属性的值会导致其他属性发生变化
let book = { _year: 2004, edition: 1 }; Object.defineProperty(book, ‘year‘, { get: function() { return this._year }, set: function(newValue) { if (newValue>2004) { this._year = newValue; this.edition += newValue - 2004; } } });

虽然我们也可以直接通过 book._year 访问,修改该属性,但是_year前面的下划线是一种常用记号,表示只能通过对象方法访问的属性,注意这是一种约定而不是语言本身的限制。

 


以上是关于JavaScript 高级程序设计读书笔记的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript高级程序设计读书笔记

读书笔记 - javascript 高级程序设计 - 第二章 在Html中使用JavaScript

JavaScript高级程序设计(读书笔记)

JavaScript高级程序设计-读书笔记

JavaScript高级程序设计-读书笔记

JavaScript高级程序设计-读书笔记