`
linweibin
  • 浏览: 32342 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

for/in语句及in运算符的使用

阅读更多

   这篇博文时关于学习javascript中我一直很少使用的一个知识点,in运算符和for/in循环语句。这两个知识点都是和对象有关系,当然这个对象也包括数组。于是,参考了网上的部分资料,总结了使用过程中的一些技巧。

1. in运算符:要求其左边的运算数是一个字符串,或可以被转换为字符串(比如number等),右边的运算数是一个对象或数组。如果该运算符左边的值是右边对象的一个属性名,则返回true。

例如:


         var person={"name":"xxx","age":25,"sex":"men"}; //对象

 

var has_name="name" in person; //返回true
      var has_girlfriend="girlfriend" in person; //返回false
      var ts="toString" in person;//返回true,toString为自定义对象的继承方法
 


   2. for/in语句:语法,for (variable in object)
                            statement;
      提供了一种遍历对象属性的方法。

例:for(var prop in my_object) {
        document.write("name:"+prop+";value:"+my_object[prop],"<br>");
    }
      javascript的数组是一种特殊的对象,因此for/in循环可以像枚举对象属性一样枚举数组下标。
可以把一个对象的所有属性名复制到一个数组中,
例:var o= {x:1,y:2,z:3};
    var a=new Array();
    var i=0;
    for (a[i++] in o) 
    ;//空语句,用于初始化数组

    3. in运算符与for/in语句不同,for/in语句in的左边可以是声明一个变量的var语句,数组的一个元素或者是对象的一个属性,不能使字符串。

    4. 数组常用的存取属性运算符是“[]”,而不是“.”。使用“[]”来命名属性名师字符串值,是动态的,可以在运行时改变,而不是一个标识符“.”。

例:var stock_name= get_stock_name_from_user();//从用户处获取股票名
    var share= get_number_of_shares();//得到股票数量
    portfolio[stock_name]= share;//动态地创建数组股票,并为每支股票赋值
    将该例子与for/in循环一起使用,当用户输入了他的投资组合,可以计算当前总值
    var value= 0;
    for (stock in portfolio) {
       value +=get_share_value(stock)*portfolio[stock];
    }
stock存取的是每支股票的名字。      
portfolio[stock]存取的是每支股票的数量。

 

5.for/in的一个陷阱:

 

var Status = function(arg){
    this.arg = arg;
	}
	Status.prototype.getStatus = function(){
    return this.arg;
	}
	
	var instance = new Status('a test string');
	var value=instance.getStatus();
	//alert(value);
	instance.ooxx = 'ooxx';

	for(i in instance){
   
         document.write(i+"<br/>");
        }
 会输出结果:

 

arg
ooxx
getStatus

 

 

但这并不是我们想要的结果:我们通常只需要获得属性,而不需要获得对象的原型。解决办法如下

for(i in instance){

    if(instance.hasOwnProperty(i)){

         document.write(i+"<br/>");

}

}

也就是说遍历的时候使用hasOwbnProperty(property)来判断是否是属性,而过滤掉对象的函数和原型 

分享到:
评论

相关推荐

    javascript中for/in循环及使用技巧

    4. 在for/in循环中,可以使用break语句和continue语句来控制循环流程,break用于完全终止循环,continue用于跳过当前循环的剩余代码并继续下一次循环。 此外,JavaScript还提供了其他类型的循环结构,例如: - for...

    Python变量,运算符以及语句的基础

    * For 语句可以嵌套,例如:For i in range(0, 10): For j in range(0, 10): print i, j 3. While 语句: * While 语句用于循环,例如:A = 1; While A != 10: print A; A += 1 4. Break 语句和 Continue 语句: ...

    java中的语句运算符数组.docx

    在本文中,我们将深入探讨Java中的语句运算符以及数组的使用。 首先,我们来看Java中的控制语句。这些语句主要用于决定程序执行的路径。`if-else`语句用于基于条件来执行代码块,比如: ```java if (condition) { ...

    python爬虫-08-where条件语句-比较运算符.ev4.rar

    最后,了解如何正确使用条件语句和比较运算符对于编写高效、灵活的Python爬虫至关重要。它们可以帮助你实现如错误检查、数据验证、定制化数据过滤等高级功能。通过本教程的深入学习,你将能够更加熟练地驾驭这些工具...

    标识符及运算符的使用.docx

    7. **In运算符**:检查一个值是否在指定的列表中。 8. **Between...And...运算符**:检查一个值是否在两个数值之间。 9. **!运算符**:用于访问对象的子集、子对象和属性,如`Forms![库存表]![入库日期].Height`。 ...

    JavaScript语言笔记包括运算符、条件语句、循环、类型转换等

    ### JavaScript语言笔记详解 #### 一、JavaScript 运算符 **JavaScript运算符**是用于执行基本算术操作的关键组成...以上是JavaScript中关于运算符、条件语句、循环、类型转换等关键概念的总结,希望对你有所帮助。

    编译原理PL/0编译器的扩充

    在PL/0的基础上,实验增加了`ELSE`,`FOR`,`TO`,`DOWNTO`这些用于控制流的保留字,以及`+=`,`-=`,`++`,`--`这四个运算符。`++`和`--`是自增和自减操作符,允许变量在赋值时直接增加或减少1;`+=`和`-=`是复合...

    Python运算符

    根据【标题】“Python运算符”及【描述】中的关键词“循环知识总结面向对象声明机制浮点型波尔性”,本文将详细介绍Python中的基本运算符,包括算术运算符、比较运算符、赋值运算符、逻辑运算符,并简要介绍面向对象...

    JavaScript常用语句及语言参考

    2. 循环语句:`for`、`while`和`do...while`用于重复执行某段代码,`for...of`和`for...in`则分别用于遍历数组和对象的属性。 3. 分支语句:`switch...case`提供多条件选择。 五、函数 函数是JavaScript中可重用的...

    基础篇16-python语句1.1

    =,&lt;,&gt;,,&gt;=),逻辑运算符(and,or,not),位运算符以及成员运算符(in,not in)等。 三、流程控制 1. 条件语句:if,elif,else用于实现条件分支。例如: ```python if x &gt; 0: print('Positive') elif x...

    javascript文档

    for...in 语句t 对应于对象或数组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函数。 function 语句 声明一个新的函数。 getDate 方法 使用...

    3运算符、表达式、流程控制、数组.pptx

    控制流程是程序执行的路径,包括条件语句(if、if-else、switch)和循环语句(for、while、do-while)。例如,if-else结构用于根据条件执行不同的代码块,而for循环常用于迭代数组或执行固定次数的操作。 数组是...

    Python使用sql语句对mysql数据库多条件模糊查询.pdf

    在上面的代码中,我们使用占位符 `%s` 代替参数,然后使用 `%` 运算符将参数替换到占位符中。 使用 Python 对 MySQL 数据库进行多条件模糊查询需要我们使用字符串拼接的方式构建 SQL 语句,并执行 SQL 语句获取查询...

    学习SQL语句之SQL语句大全.pdf

    学习 SQL 语句大全 SQL 语句是数据库管理系统中使用...* IN 运算符:指定一个集合。 本文总结了 SQL 语句大全的主要内容,涵盖了数据库操作的各个方面,包括数据操作、数据概念、数据操纵、事务操纵、程序化 SQL 等。

    Annotated+Solution+Guide+for+Thinking+in+Java+4th+Edition

    1. **基础语法**: 包括变量声明、数据类型(如基本类型与引用类型)、运算符(如算术、比较、逻辑、位运算符)以及流程控制语句(如if、switch、for、while循环)。 2. **类与对象**: 解答中会讲解面向对象的基本...

    精通sql结构化查询语句

    10.1.5 使用子查询创建视图 10.2 使用IN语句的子查询 10.2.1 简单的IN语句子查询 10.2.2 使用IN子查询实现集合交运算 lO.2.3 使用IN子查询实现集合差运算 10.3 使用EXISTS语句的子查询 10.3.1 简单的EXISTS语句子...

    Programming In C 答案(第三版)

    3. 控制结构:包括条件语句(if...else、switch...case)、循环语句(for、while、do...while)以及跳转语句(break、continue)。 4. 函数:C语言中的函数用于组织代码,实现模块化编程。函数可以有参数和返回值,...

    第三节 运算符 流程控制.docx

    例如,`if`语句用于根据条件执行特定代码块,`for`和`while`循环用于重复执行代码。在处理两个数的大小关系时,可以使用`if...else`结构来实现: ```java import java.util.Scanner; public class CompareNumbers ...

    Javascript学习笔记-详解in运算符

    `for...in`循环语句用于遍历对象的所有可枚举属性,包括从原型链继承的属性,但不包括对象的内置属性。 ```javascript function Bird() { this.wings = 2; this.feet = 4; this.flyable = true; } var chicken = ...

Global site tag (gtag.js) - Google Analytics