Javascript中的"in" “for...in” 及对象/关联数组
来源:互联网 发布:可以撕衣服的软件 编辑:程序博客网 时间:2024/06/06 06:29
JavaScript对象的属性有两种,一种是直接在对象上定义的属性:
prop2 = 456
prop1 和 prop2都是直接定义在a上的属性。这种关系可以通过hasOwnProperty方法来检查:
a.hasOwnProperty(“prop2”) === true
比如上面的对象a,它自己并没有定义hasOwnProperty方法,而是从Object.prototype继承过来的。如何判断一个属性是继承过来的?
“propX” in a && !a.hasOwnProperty(“propX”)
上面用到了in操作符,它用来判断对象是否具有某个属性(不管是继承过来的,还是自己定义的)。因此:
“hasOwnProperty” in a === true
for...in 语句用于遍历对象的属性:
"a" : 1,
"b" : 2
};
for (var p in obj) {
document.writeln("key:" + p + ", value:" + obj[p]);
}
// key:a, value:1
// key:b, value:2
obj.propertyIsEnumerable("hasOwnProperty") === false
“propertyIsEnumerable”方法,字面理解,就是用于判断属性是否可以遍历的。一般来说,直接定义的属性是可以遍历的,ECMA 5 版的Javascript中可以配置属性是否可以遍历。
获取一个对象的属性,有两种方法: . 和 []。 “.”后面必须跟一个JavaScript的标识符,因此,假如对象a有一个属性 “total money”,用 “.”操作符就没办法取出来:
“total money”:123
}
a.total money //报错
a.”total money”//报错
[]操作符可以接受字符串,或者任何可以转化为字符串到原始值,甚至对象:
var a = {
"123": "number",
"true" : "boolean",
"null": 'object null',
"undefined":"undefined"
}
document.writeln(a[123]);
document.writeln(a[true]);
document.writeln(a[null]);
document.writeln(a[undefined]);
var b = {
"b":"789",
"toString":function(){
return "123";
}
};
document.write( a[b] );
//输出
// number
// boolean
// object null
// undefined
// number
上面代码中的b对象,定义了toString方法,在b作为[]操作对象时自动调用,转化成字符串。
因为JavaScript中的对象是关联数组,即用字符串标记到属性的集合。类似于Java中到Map,只不过,键只能是字符串。(Javascript对象还可以从prototype中继承属性,本文不描述)
Javascript中的数组,其索引看起来是整型的,其实内部实现也是字符串:
document.writeln( a[0] );//beijing
document.writeln( a["0"] );//beijing
document.writeln( a.hasOwnProperty("0") );//true
javasciprt数组中,相邻元素在内存中到位置并不是相连的。这和C/C++,Java等语言中的数组是不一样的。性能当然也会有差别。
上面的代码中,用到了 document.writeln,为了获得更好的显示效果,代码是这样写的:
<pre>
<script type="text/javascript">
...
</script>
</pre>
上述方法仅用于调试。
- Javascript中的"in" “for...in” 及对象/关联数组
- 【javascript】javascript中for...in...遍历关联数组
- JavaScript 中的for/in
- JavaScript 自定义对象 for in
- javaScript 中的for...in循环
- Javascript中的For In语句
- JavaScript中的for in循环
- javascript中的for in 循环
- javascript遍历数组切莫用for in
- for in 遍历数组或对象注意事项
- for in 循环遍历对象和数组
- JavaScript遍历对象用for in循环
- JavaScript - 对象专用语句[ for...in 语句 ]
- JavaScript(二)对象、for ... in
- javascript for/in 循环遍历对象属性
- for of 和 for in 在数组和对象中的区别
- Javascript中的for-in循环和hasOwnProperty
- Javascript 中的for…in…循环
- redis conf
- Django-- admin后台管理模块的使用
- hdu 2682——Tree(最小生成树)
- [Linux] Linux系统服务优化 [ 技术分享 ]
- ssh: connect to host localhost port 22: Connection refused
- Javascript中的"in" “for...in” 及对象/关联数组
- mysql的约束
- JAVA常用的一些排序算法
- 装饰者模式(Decorator Pattern)(二):HeadFirst中咖啡添加调料
- 【摘录】学习WindowServiceManager
- 程序员选择字体的标准是?
- go语言常见缺陷与陷阱一(defer)
- DWR与Spring MVC 集成
- 执行exe文件