对象可枚举和不可枚举属性
来源:互联网 发布:wifi无法连接到网络 编辑:程序博客网 时间:2024/05/18 15:51
在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的。可枚举性决定了这个属性能否被for…in查找遍历到。
一、怎么判断属性是否可枚举
js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性:
1
2
3
4
var
num =
new
Number();
for
(
var
pro
in
num) {
console.log(
"num."
+ pro +
" = "
+ num[pro]);
}
它的输出结果会是空。这是因为Number中内置的属性是不可枚举的,所以不能被for…in访问到。
Object对象的propertyIsEnumerable()方法可以判断此对象是否包含某个属性,并且这个属性是否可枚举。
需要注意的是:如果判断的属性存在于Object对象的原型内,不管它是否可枚举都会返回false。
二、枚举性的作用
属性的枚举性会影响以下三个函数的结果:
for…in
Object.keys()
JSON.stringify
先看一个例子,按如下方法创建kxy对象:
1
2
3
4
5
6
7
8
9
10
11
12
13
function
Person() {
this
.name =
"KXY"
;
}
Person.prototype = {
constructor: Person,
job:
"student"
,
};
var
kxy =
new
Person();
Object.defineProperty(kxy,
"sex"
, {
value:
"female"
,
enumerable:
false
});
其中用defineProperty为对象定义了一个名为”sex”的不可枚举属性
接下来做以下验证:
1.
1
2
3
for
(
var
pro
in
kxy) {
console.log(
"kxy."
+ pro +
" = "
+ kxy[pro]);
}
遍历结果:
可以看到除了”sex“之外的属性都遍历到了
2.
1
console.log(Object.keys(kxy));
结果:
只包含”name”属性,说明该方法只能返回对象本身具有的可枚举属性。
3.
1
console.log(JSON.stringify(kxy));
<结果:
此方法也只能读取对象本身的可枚举属性,并序列化为JSON对象。
阅读全文
0 0
- 对象可枚举和不可枚举属性
- 可枚举属性和不可枚举属性
- 枚举属性和不可枚举属性
- JavaScript中的可枚举属性与不可枚举属性
- javascript中的可枚举属性与不可枚举属性
- JS 对象属性"可枚举"
- 前端复习--对象的可枚举属性
- ES6-对象的扩展-属性的可枚举性和遍历
- ruby 迭代器和可枚举对象
- JS中对象属性的可枚举性
- 枚举自动对象属性
- es6 javascript属性的可枚举性
- 对象的"可枚举"到底有啥用?
- js对象的可枚举性
- Object.assign() 方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
- 理解Javascript对象(属性探测,删除属性,属性枚举)
- javascript基础(对象,对象属性,属性基本和引用数据类型,字面量创建对象,垃圾回收,属性的枚举)(十三)
- JavaScript之枚举属性的对象函数
- 2.走迷宫
- layer弹出ifream,点击按钮把子页面数据传到父页面,对接高德地图API接口,获取地理位置坐标
- display:table-cell的实际应用
- 博文荐书:阿里运维、Java微服务、Scala编程
- mysql--12100sql规范
- 对象可枚举和不可枚举属性
- 水经注影像离线包简介
- 数组按照某一字段排序
- 最简单的前端动画加载器
- 2.OpenGL学习之基本图元
- 对被忽视的数据安全威胁的仔细观察
- System.web.mvc 未能加载或是。。。
- Mariadb
- X-Window结构分析与应用