js Object.defineProperty 使用
2024-10-12 10:34:52
语法
Object.defineProperty(obj, prop, descriptor)
参数说明:
obj:必需。目标对象
prop:必需。需定义或修改的属性的名字
descriptor:必需。目标属性所拥有的特性
返回值:
传入函数的对象。即第一个参数obj。
针对属性,我们可以给这个属性设置一些特性,比如是否只读不可以写;是否可以被for..in或Object.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遍历到。
最新文章
- eclipse使用
- bisController
- Aspose.word在asp.net mvc中如何使用的个人总结
- DRP PK 牛腩新闻发布系统
- Xml 学习二
- wcf安全
- cocos2d-js-v3.0-rc0 下 pomelo-cocos2d-jsb native web 配置
- Android Application plugin
- iOS之 git 简单使用
- P2805 [NOI2009]植物大战僵尸
- 配置进程外的Session
- 关于jqGrid中GridUnload方法的困惑
- sitecore系列教程之如何以编程方式将访客数据关联到联系人卡片
- 操作Checkbox标签
- tcp/ip通信中tcp头部结构tcphdrp->;check校验计算
- 【代码笔记】iOS-DropDownDemo-下拉按钮效果
- CF1042C Array Product 分类讨论+贪心
- localStorage(本地存储)使用总结
- 【明哥报错簿】可以访问jsp但是访问不到controller
- [php]referer应用--http防盗链技术
热门文章
- Week Two
- CXF和Axis2开发webservice也是可以添加asmx等后缀
- 配置nginx虚拟目录配置文件支持tp的pathinfo
- android基础篇------------java基础(11)(文件解析xml and Json )
- OpenCV2马拉松第12圈——直方图比較
- Spring @PostConstruct和@PreDestroy实例
- MYSQL 名人博客
- MYSQL Out of resources when opening file &#39;./xxx.MYD&#39; (Errcode: 24)
- Install Tomcat 7 on CentOS, RHEL, or Fedora
- cocos2d-x v3.0各个环境下创建项目以及编译、执行官方DEMO