下面说一下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. JavaScript语言基础知识1

    我们想知道什么JavaScript.首先,我们必须知道JavaScript有什么特点? JavaScript究竟是什么?它是一种基于对象而且具有安全性的脚本语言,对.它是脚本语言.所以它有下面特点: ...

  2. 【云图】如何制作全国KTV查询系统?

    原文:[云图]如何制作全国KTV查询系统? 摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. ...

  3. HDU 2516 取石子游戏 (博弈论)

    取石子游戏 Problem Description 1堆石子有n个,两人轮流取.先取者第1次能够取随意多个,但不能所有取完.以后每次取的石子数不能超过上次取子数的2倍.取完者胜.先取者负输出" ...

  4. http层负载均衡之haproxy

    http层负载均衡之haproxy实践篇(一) 方案 上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案:haproxy http层负载均衡 安装一个hapro ...

  5. STL之sort函数的用法

    说明:本文仅供学习交流,转载请标明出处,欢迎转载! STL封装了一个排序算法,该算法相应的头文件为#include<algorithm>,我们能够依据须要对一个数组进行排序或者降序. so ...

  6. C# 获取磁盘容量

    原文:C# 获取磁盘容量 /// 获取指定驱动器的空间总大小(单位为B) /// </summary> /// <param name="str_HardDiskName& ...

  7. JS模块与命名空间的介绍二

    区别一:

  8. Appium Android Bootstrap源码分析之命令解析执行

    通过上一篇文章<Appium Android Bootstrap源码分析之控件AndroidElement>我们知道了Appium从pc端发送过来的命令如果是控件相关的话,最终目标控件在b ...

  9. ORA-00265: instance recovery required, cannot set ARCHIVELOG mode

    症状: 我打开后归档命令报告运行错误ORA-00265 SQL> alter database archivelog; alter database archivelog * ERROR at ...

  10. C++在const用法

    注意 const对象默觉得文件的局部变量 在全局作用域里定义非const变量时,它在整个程序中都能够訪问.我们能够把一个非const变量定义在一个文件里,如果已经做了合适的声明,就能够在另外的文件里使 ...