下面说一下for… in语句。可直接把下面的代码复制到浏览器的控制台或Node环境下去执行。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//用来快速迭代对象。

var o ={name:'dylan',age:24,num:110};
for(var test in o){
  console.log("o["+test+"]= "+o[test]);
}
console.log("~~~~~~~~~~~")
Object.prototype.getName =function(){return this.name};
o.getAge=function(){returnthis.age};

for(var test in o){
  console.log("o["+test+"]= "+o[test]);
}
console.log(o.getName()+o.getAge());

//getName并不是o的方法,它是Object原型方法,而Object原型方法会被

//所有Object类型实例对象所继承的.

//因此可以看出使用for...in语句不仅能迭代出对象的属性,还可迭代出其原型方法。

console.log("~~~~hasOwnPyroperty~~~~~~~");
for(var test in o){
  if(o.hasOwnProperty(test)){
  console.log("o["+test+"]= "+o[test]);
  }
}

//通过调用hasOwnProperty方法过滤原型中的方法。

//如果o有二个undefined和null属性呢?.

o.undefined ='undefined';
o.null = 'null';
console.log(o);
console.log(o.toString());
console.log(o.valueOf());
for(var test in o){
  if(o.hasOwnProperty(test)){
  console.log("o["+test+"]= "+o[test]);
  }
}

//如果 o=null;

o=undefined; //o=null;
for(var test in o){
  if(o.hasOwnProperty(test)){
  console.log("o["+test+"]= "+o[test]);
  }
}

//既不会报错,也不会输出。但如果是在低版本浏览器,很有可能报异常。因此在使用

//for-in之前,可以先过滤一下迭代对象是否为null或undefined.

console.log("~~~~Iteratearray~~~~~~~");

//迭代数组可以吗?

var a = [26,'hellworld',newDate()];
for(var pro in a){
  console.log("a["+pro+"]="+a[pro]);
}

//Array也是一种对象,因此原型的getName方法同样被迭代出来。

function keys(obj){
var aRaa = [];
var i=0;
for(aRaa[i++] in obj);
  return aRaa;
}
console.log(keys(o));
a.index = a.length;
console.log(a);
console.log(keys(a));

//当你以为是对象数组时,执行下面一条语句,发现又会发错。

//console.log(a[index]); //报错,index未定义

//但是下面这条语句不会报错。

console.log(a.index);
console.log(a[getName]);

//当迭代数组时,尽量少用for....in 语句,这样可以减少不必要的错误。用下面的常用方法,更好!

for(var i=0,lenght =a.length;i<lenght;i++){
  console.log(a[i]);
};

【Dylan童鞋】

关注Dylan童鞋,请搜索微信号:DylanTongXue 。

推送时间为:周一,周三,周四,周日晚上9:20分左右。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

查看历史记录请回复1~9之间的数字。比如查看第六篇文章直接回复数字:6 。显示本帮助菜单,回复"H"。

JS之For---in 语句的更多相关文章

  1. js种的循环语句

    //js种的循环语句 //while与do while的区别是while是满足条件后才执行 //do while是不管满不满足条件都会执行一次 //for 循环与while,do while相比循环结 ...

  2. js中的条件语句

    //js中的条件语句 ; //example1 单分支语句 ){ console.log("你已经不年轻了!"); }else{ console.log("你依然很有活力 ...

  3. js中的循环语句

    js中的循环语句可分为三种:1.while:2.do……while:3.for. while的语法为 while (exp) {    //statements;} var a=1,b=0; whil ...

  4. JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构

    JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ...

  5. 在js中插入html语句

    连上数据库之后,填充数据时往往需要在js中插入html语句 做法是: <body> <div class="modal-body" id="delete ...

  6. JS中的特有语句-for in

    <script> /* *js中特有语句for in *for(变量 in 对象)//对对象进行变量的语句 *{ *} */ var arr = [32,80,65]; for(i in ...

  7. js中的with语句

    javascript中的with语句是什么?       with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性.要给对象创建新的属性,必须明确地引用该对象.   看起来 ...

  8. js多条件if语句简写发生Uncaught SyntaxError: Unexpected token }

    改写原生js 多条件if判断语句时,采用三元方法,发生Uncaught SyntaxError: Unexpected token } function compareImgSize() { var ...

  9. JS总结 运算符 条件语句

    算术运算符+-*/ 与数学计算一致,配合()号进行各种计算 另外,+号还可以达到连接的作用.例如: var a = 15; alert("a的值等于"+a); 前后增减量运算符: ...

  10. [小问题笔记(七)] JS和 jQuery常用语句笔记(隐藏/显示/禁用标签 日期操作 跳转等)

    隐藏/显示标签 $("#div1").css("display", "none");$("#div2").css(&qu ...

随机推荐

  1. crawler_网络爬虫中编码的正确处理与乱码的解决策略

    转载: http://hi.baidu.com/erliang20088/item/9156132bdaeae8949c63d134 最近一个月一直在对nutch1.6版进行中等层次的二次开发,本来是 ...

  2. Android_显示器本身被卸载应用程序

    1.经jni实现功能 //LOG宏定义 #define LOG_INFO(tag, msg) __android_log_write(ANDROID_LOG_INFO, tag, msg) #defi ...

  3. 蓝桥杯 BASIC 27 矩阵乘法(矩阵、二维数组)

    [思路]:注意0次幂是单位矩阵. [AC代码]: #include <iostream> #include <algorithm> #include <iomanip&g ...

  4. CSharp设计模式读书笔记(8):桥接模式(学习难度:★★★☆☆,使用频率:★★★☆☆)

    桥接模式(Bridge Pattern): 将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模 ...

  5. 【高德地图API】如何制作自己的旅游地图?

    原文:[高德地图API]如何制作自己的旅游地图? “旅行的梦想并不遥远,只要一颗流浪四方的心.”——唐人立. 最早认识唐人立的时候,他还是大二的学生.他独自完成了“南京20年规划地图”.几年前,他完成 ...

  6. Redis 安装与简单示例

    Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...

  7. jquery 仅仅读

    大家都理解这是什么,正常的写法例如以下: if (status == true) { $("#minDelistStr").val(totalAmount);// 去掉首部的&qu ...

  8. jQuery按回车键执行指定方法

    1.按Enter键执行指定方法: //按回车进入页面 $(function(){ $(document).keydown(function(event){ if (event.keyCode == 1 ...

  9. Windows环境搭建与第一个C# Sample

    Redis入门 - Windows环境搭建与第一个C# Sample   什么是Redis? Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.从2013年5月开始,R ...

  10. .NET开源项目 TOP 25

    .NET开源项目 TOP 25 如果知道.NET项目在开源中国的git上所占的比重只有5%的话,为什么这个<2014年国人开发的最热门的开源软件TOP 100>榜中.NET项目那么少就是情 ...