in

 使用点一: 在js中,for……in用于遍历一个对象的属性,把对象的属性名和属性值都提出来。

var obj = {
"key1":"value1",
"key2":"value2",
"key3":"value3"
}; //属性名
function EnumaKey(){
for(var key in obj ){
alert(key);
}
} //属性值
function EnumaVal(){
for(var key in obj ){
alert(obj[key]);
}
}

  数组也可以用for……in进行遍历,但是不推荐使用这个。由于for……in遍历的顺序得不到保障,而且如果在Array的原型上添加了属性,这个属性也会被遍历出来。

  深入知识点

  在使用for in遍历对象时候,对象有一个重要的方法:hasOwnProperty()。该方法可以在遍历对象属性的时候可以过滤掉从原型链上下来的属性。举例说明:

  

function testForIn(){
var man={
hands:,
legs:,
head:
} for(key in man){
//如果不过滤,man对象将会遍历出clone这个属性
if(man.hasOwnProperty(key)){
document.write(key+" ");
document.write(man[key]);
document.write("<br/>");
}
}
} function keyevent(){
if(event.keyCode==){
//为全局对象添加一个clone属性
if(typeof Object.prototype.clone === "undefined"){
Object.prototype.clone = function () {};
}
testForIn();
}
}

输出结果:

//未使用hasOwnProperty()方法过滤
hands
legs
head
clone function () {}

//使用hasOwnProperty()方法过滤
hands
legs
head

使用点二:in操作符用来判断某个属性属于某个对象,可以是对象的直接属性,也可以是通过prototype继承的属性。

注意事项:

对于一般的对象属性需要用字符串指定属性的名称   如:

var mycar = {make: "Honda", model: "Accord", year: };
"make" in mycar // returns true
"model" in mycar // returns true

对于数组属性需要指定数字形式的索引值来表示数组的属性名称(固有属性除外,如length)。

// Arrays
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
in trees // returns true
in trees // returns true
in trees // returns false
"bay" in trees // returns false (you must specify the index number,
// not the value at that index)
"length" in trees // returns true (length is an Array property)

in的右边必须是一个对象,如:你可以指定一个用String构造器生成的,但是不能指定字符串直接量的形式:

var color1 = new String("green");
"length" in color1 // returns true
var color2 = "coral";
"length" in color2 // generates an error (color is not a String object)

如果你使用delete操作符删除了一个属性,再次用in检查时,会返回false,如:

var mycar = {make: "Honda", model: "Accord", year: };
delete mycar.make;
"make" in mycar; // returns false var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
delete trees[];
in trees; // returns false 

如果你把一个属性值设为undefined,但是没有使用delete操作符,使用in检查,会返回true.

var mycar = {make: "Honda", model: "Accord", year: };
mycar.make = undefined;
"make" in mycar; // returns true var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
trees[] = undefined;
in trees; // returns true

最新文章

  1. ORACLE数据库存储结构
  2. CSS初学
  3. andriod之摄像头驱动流程
  4. JDK环境变量中dt.jar、tools.jar等变量值的作用
  5. Jquery DataTables warning : Requested unknown from the data source for row 0
  6. php中的常用魔术方法总结
  7. C# 网页信息采集(数据访问)
  8. 【iOS开发】iOS7 兼容及部分细节
  9. Hibernate Is Not Mapped(实体名 is not mapped [from book where id=&#39;0&#39;])
  10. python调用shell, shell 引用python
  11. svn: E200007: CHECKOUT can only be performed on a version resource
  12. sql子查询
  13. Plupload 上传控件使用指南
  14. linux下磁盘分区详解 图文(fdisk;mkfs)
  15. Swagger UI 传入对象类型参数
  16. Web开发——HTML基础(HTML表格 &lt;table&gt;)
  17. RabbitMQ(一):RabbitMQ 安装与配置(Mac)
  18. 【iCore4 双核心板_ARM】例程二:读取ARM按键状态
  19. 大量的QT控件及示例发放
  20. MVC中通过ajax判断输入的内容是否重复(新手笔记,请各位多多指教)

热门文章

  1. [OC Foundation框架 - 23] 文件管理
  2. OWIN学习
  3. IDF实验室-简单编程-特殊的日子 writeup
  4. android 五子棋开发
  5. 记一次js中和php中的字符串长度计算截取的终极问题和完美解决方案
  6. 【美妙的Python之中的一个】Python简单介绍及环境搭建
  7. Java正則表達式入门
  8. css3 字体旋转
  9. 爱维帮---LVS
  10. js中的preventDefault和stopPropagation