JavaScript Object的defineProperty / getOwnPropertyDescriptor
2024-09-07 15:17:23
getOwnPropertyDescriptor and defineProperty
function def (obj, key, val, enumerable) {
Object.defineProperty(obj, key, {
value: val,
enumerable: !!enumerable,
writable: true,
configurable: true
})
}
const obj = {}
def(obj,'name','leslie',true)
def(obj,'age',18,false)
def(obj,'company','ibm',true)
// 测试 enumerable
for(let [key,value] of Object.entries(obj)){
// 只会打印出 name 和 company属性
// 因为 age 是不可枚举的属性
console.info(`${key}:${value}`)
}
// 测试 getOwnPropertyDescriptor
const property = Object.getOwnPropertyDescriptor(obj,'age')
/*
{
configurable: true,
enumerable: false,
value: 18,
writable: true,
}
*/
console.info(property)
// 对象属性获取,兼容模式
const name = obj && obj.name
const test = obj && obj.test || 'test'
console.info(name) // leslie
console.info(test) // test
最新文章
- 2-1 Linux 操作系统及常用命令
- winform设置文本框宽度 根据文字数量和字体返回宽度
- Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)
- 理解RxJava:(三)RxJava的优点
- 注意java的对象引用
- GIT,VAGRANT及COREOS
- jquery.zclip—复制剪贴板(兼容各大浏览器)
- Java开发从初级到中级
- poj_1845: Sumdiv
- 【原创】源码角度分析Android的消息机制系列(五)——Looper的工作原理
- OpenLayer3调用天地图,拖拽后,地图消失的问题[已解决]
- Java Servlet 笔记1
- 杭电ACM 1001题
- 剑指offer【书】之简历抒写
- bzoj5397 circular 随机化(
- leetcode — add-binary
- FCC JS基础算法题(4):Title Case a Sentence(句中单词首字母大写)
- centos7改中文
- BZOJ5252 八省联考2018林克卡特树(动态规划+wqs二分)
- Windows 10 的一些快捷键