语法

Object.defineProperty(obj, prop, descriptor)

参数说明:

obj:必需。目标对象 
prop:必需。需定义或修改的属性的名字
descriptor:必需。目标属性所拥有的特性

返回值:

传入函数的对象。即第一个参数obj。

针对属性,我们可以给这个属性设置一些特性,比如是否只读不可以写;是否可以被for..inObject.keys()遍历。

示例1:

<!DOCTYPE html>
<html lang="zh"> <head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Object.defineProperty 示例</title>
</head> <body> <script type="text/javascript">
var ss = {
age: 10
};
var name = 'mfg';
Object.defineProperty(ss, 'name', {
//设置是否可以枚举
enumerable: false,
//是否可以删除目标属性
configurable: false,
// writable 控制是否可以修改(赋值)
//获取属性值
get() {
return name;
},
//设置属性值
set(val) {
name = val;
}
})
console.log(ss.name)
ss.name = 'new value';
console.log(ss.name);
</script>
</body> </html>

示例2:

<!DOCTYPE html>
<html lang="zh"> <head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Object.defineProperty 示例</title>
</head> <body> <script type="text/javascript">
Object.defineProperties(Object.prototype, 'allkeys', {
value: function() {
let result = [];
for(let i in this) {
result.push(i)
}
return result;
},
writable: true,
//关键配置,不可枚举,这样就可以在for in中遍历不到了
enumerable: false,
configurable: true
});
</script>
</body> </html>

说明:

示例2的例子,在Object.prototype上增加了方法,同时保证了不被for in遍历到。

最新文章

  1. eclipse使用
  2. bisController
  3. Aspose.word在asp.net mvc中如何使用的个人总结
  4. DRP PK 牛腩新闻发布系统
  5. Xml 学习二
  6. wcf安全
  7. cocos2d-js-v3.0-rc0 下 pomelo-cocos2d-jsb native web 配置
  8. Android Application plugin
  9. iOS之 git 简单使用
  10. P2805 [NOI2009]植物大战僵尸
  11. 配置进程外的Session
  12. 关于jqGrid中GridUnload方法的困惑
  13. sitecore系列教程之如何以编程方式将访客数据关联到联系人卡片
  14. 操作Checkbox标签
  15. tcp/ip通信中tcp头部结构tcphdrp-&gt;check校验计算
  16. 【代码笔记】iOS-DropDownDemo-下拉按钮效果
  17. CF1042C Array Product 分类讨论+贪心
  18. localStorage(本地存储)使用总结
  19. 【明哥报错簿】可以访问jsp但是访问不到controller
  20. [php]referer应用--http防盗链技术

热门文章

  1. Week Two
  2. CXF和Axis2开发webservice也是可以添加asmx等后缀
  3. 配置nginx虚拟目录配置文件支持tp的pathinfo
  4. android基础篇------------java基础(11)(文件解析xml and Json )
  5. OpenCV2马拉松第12圈——直方图比較
  6. Spring @PostConstruct和@PreDestroy实例
  7. MYSQL 名人博客
  8. MYSQL Out of resources when opening file &#39;./xxx.MYD&#39; (Errcode: 24)
  9. Install Tomcat 7 on CentOS, RHEL, or Fedora
  10. cocos2d-x v3.0各个环境下创建项目以及编译、执行官方DEMO