属性类型

数据属性 - 包含一个数据值的位置,可以读取和写入值

[writable]

是否能修改属性的值

true

[enumerable]

是否通过for in 循环返回属性(是否可以被枚举)

true

[configurable]

是否能通过delete删除,能否修改属性的特性,能否修改访问器属性

true

[value]

包含这个属性的数据值,读取属性值的时候从这个位置读取。

undefined

访问器属性

[enumerable]

是否通过for in 循环返回属性(是否可以被枚举)

true

[configurable]

是否能通过delete删除,能否修改属性的特性,能否修改访问器属性

true

[get]

读取属性时调用的函数

undefined

[set]

写入属性时调用的函数

undefined

属性操作

  • 定义属性:Object.defineProperty()
  • 查看属性:Object.getOwnPropertyDescriptor()
"use strict";
// *****************************************************************
// 操作数据属性
var person = {name: 'hugh',age: 29,sayName: function() { console.log(1); }
}
// 修改属性默认特性:Object.defineProperty()
Object.defineProperty(person, "name", {writable: true,value: 'dong',configurable: false,enumerable: false
});
console.log(person);// *****************************************************************
// 操作访问器属性
var book = {_year: 2004, // _作为标记只能通过对象访问的属性edition: 0
};
Object.defineProperty(book, "year", {// 访问器属性year包含setter和getter函数get: function() {return this._year;},set: function(newValue) {this._year = newValue;this.edition = newValue - 2004;}
})
book.year = 2008;
console.log(book);
console.log(book.edition);
// 旧方法,ie8部分不支持defineProperty()
// 严格模式不可用
// book._defineGetter_("year",function(){//     return this._year;
// });
// book._defineSetter_("year",function(newValue){//     this._year = newValue;
//     this.edition = newValue - 2014;
// });// *****************************************************************
// 定义多个属性
var book2 = {};
Object.defineProperties(book2, {// 数据属性
    _year: {value: 2004,writable: false,enumerable: false,configurable: true},edition: {value: 0,writable: false,enumerable: false,configurable: true},// 访问器属性
    year: {get: function() {return this._year;},set: function(newValue) {this._year = newValue;this.edition = newValue - 3000;}}
});
console.log(book2);// *****************************************************************
// 查看属性的属性
console.log(Object.getOwnPropertyDescriptor(book2,'_year'));
console.log(Object.getOwnPropertyDescriptor(book2,'edition'));
console.log(Object.getOwnPropertyDescriptor(book2,'year'));

转载于:https://www.cnblogs.com/hughdong/p/7262539.html

JavaScript | 数据属性与访问器属性相关推荐

  1. Js中的数据属性和访问器属性

    Js中的数据属性和访问器属性 在javaScript中,对象的属性分为两种类型:数据属性和访问器属性. 一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性 ...

  2. 深入理解对象的数据属性与访问器属性及属性间相互转换

    ECMA-262 第 5 版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMAScript 中有两种属性:数据属性和访问器属性. 1. 数据属性 数据 ...

  3. 数据属性和访问器属性

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>数据 ...

  4. ECMAScript数据属性和访问器属性

    ECMA-262 第 5 版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征. ECMA-262 定义这些特性是为了实现 JavaScript 引擎用的,因此 ...

  5. 《js高级程序设计》6.1.1-6.1.3——数据属性、访问器属性

    数据属性:该属性包含了一个数据值的位置,它包含了4个描述行为的特性: 1. [[Configurable]]:表示是否能通过delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访 ...

  6. JS-数据属性与访问器属性

    数据属性与访问器属性 1.对象属性的作用主要是数据的存储 2.既然数据存在存储,则会有增删改查相关操作(增加属性,修改属性值,获取属性值,删除属性) 3.数据属性用于控制属性的增删改查特征 4.访问属 ...

  7. JavaScript 使用变量访问对象属性

    中括号操作符的另一个使用方式是用变量来访问一个属性.当你需要遍历对象的属性列表或查表时,这种方式极为有用. 这有一个使用变量来访问属性的例子: var someProp = "propNam ...

  8. 使用访问器属性模拟java中的私有变量

    2019独角兽企业重金招聘Python工程师标准>>> <script>"use strict";//注意,一定要写严格模式function Emp( ...

  9. 【Kotlin】属性 与 幕后字段 ( 属性声明 | 属性初始化器 | 属性访问器 | field 属性幕后字段 | lateinit 延迟初始化属性 )

    文章目录 I . 属性 字段 总结 II . 属性声明 III . 属性初始化器 IV . get / set 属性访问器 V . 属性幕后字段 field VI . 变量和常量的区别 VII . 延 ...

最新文章

  1. ubuntu 导入mysql_Ubuntu 下MySQL导入数据库.sql文件 命令
  2. 音视频技术开发周刊 86期
  3. PHP页面编码声明与用header或meta实现PHP页面编码的区别
  4. xp 4g内存补丁_32位操作系统导致电脑可用内存不足4G
  5. RAID简单介绍和Linux如何搭建一个RAID
  6. [转]使用Python MrJob的MapReduce实现电影推荐系统
  7. learun力软敏捷开发框架
  8. 气温和降水空间栅格数据下载RS123
  9. tv 斐讯n1原生android_斐讯T1刷原生安卓TV
  10. 高度坍塌的几种解决方法
  11. yarn : 无法加载文件 C:\Users\wangxin67\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.mic
  12. 水果店圈子:水果店开业前需要做的准备,水果店开业当天要注意哪些问题
  13. 元宇宙大火的“天时、地利、人和”
  14. 3-Go并发编程与协程Goroutine
  15. 尾递归优化 - 尾递归优化
  16. 如何去理解虚拟机的概念?
  17. 【数模学习笔记】【线性规划】巧用0-1变量
  18. 防火墙是什么,其作用是什么?
  19. 手把手教你如何制作和使用lib和dll
  20. 雪落庭院中,围炉话飞鸿——宜盾普GEN5取暖器体验札记

热门文章

  1. 《软件需求规格说明书》 ---学士之路
  2. 如何创建一个基本JQuery的插件
  3. 大道至简第一章阅读笔记
  4. 找规律 百度之星资格赛 1001 大搬家
  5. jquery点击缩略图切换视频播放的视频切换焦点图效果
  6. qq掉线咒语:aidusort.as
  7. 关于Linux系统中用户权限问题
  8. 进站公交车碾起积水溅上轿车两男子驾车撞伤公交司机
  9. 2.6内核的配置与编译
  10. oracle avg分析函数,分析函数之sum,avg