属性类型

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

[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'));

最新文章

  1. 利用BeautifulSoup抓取新浪网页新闻的内容
  2. 运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory
  3. maven integration with eclipse 3.0.4 does not work with NTLM proxy
  4. 13.熟悉JDK的配置,环境变量
  5. 一款轻量级前端框架Avalon.Js
  6. Nginx集群之WCF大文件上传及下载(支持6G传输)
  7. Jenkins 2.x版本修改启动端口号
  8. Python数据结构应用4——搜索(search)
  9. sqlserver数据库方面的排序四大王
  10. 轻量的web框架Bottle
  11. css3 object-fit详解
  12. STL中vector、set、list和map
  13. [BOI2007]Mokia 摩基亚(CDQ分治)
  14. Oracle数据库内存使用情况分析查看
  15. luogu P2644 树上游戏
  16. AutoFac记录
  17. .NET Core开发日志——Action
  18. TinyXML C++解析XML
  19. linux tomcat启动后无法访问
  20. 【教程】【FLEX】#005 拖动

热门文章

  1. Flask实战第62天:帖子详情页布局
  2. [NOIP2016]天天爱跑步(树上差分+线段树合并)
  3. 【状压dp】Travelling
  4. BZOJ 2818 Gcd(莫比乌斯反演)
  5. [TCO2013]Block3Checkers
  6. android 关于Make sure the plugin is properly configured问题的解决办法
  7. JDK源码学习笔记——HashSet LinkedHashSet TreeSet
  8. 记录SSD中的一些东西
  9. IRC程序学习
  10. 利用cURL请外部接口