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

JavaScript高级程序设计(七):JavaScript中的in关键字的更多相关文章

  1. JavaScript高级程序设计-(1)html中使用JavaScript

    html中使用JavaScript 1.延迟脚本 script标签定义了defer属性,脚本会被延迟到整个页面都解析完毕后运行 详细内容如下: 2.异步脚本 script标签定义了async属性,as ...

  2. Javascript高级程序设计——在HTML中使用Javascript

    <script>元素 向HTML页面中插入Javascript的主要方法,就是使用<script>元素,<script>元素有六个属性: async:可选.表示应该 ...

  3. javascript 高级程序设计 七

    引言:好几天没有写随笔了,项目有点紧,恰好今天项目遇到了比较大阻塞,就只好来写一篇随笔来压压惊. 1.Date类型 创建一个新的Date:(除了new Date()外) var someDate = ...

  4. [笔记]《JavaScript高级程序设计》- JavaScript简介

    JavaScript实现 虽然JavaScript和ECMAScript通常都被人们用来表达相同的含义,但JavaScript的含义却比ECMA-262中规定的要多得多.一个完整的JavaScript ...

  5. 《Javascript高级程序设计》阅读记录(七):第七章

    <Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ...

  6. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

  7. 《JavaScript高级程序设计(第3版)》笔记-序

    很少看书,不喜欢看书,主要是上学时总坐不住,没有多大定性,一本书可以两天看完,随便翻翻,也可以丢在角落里几个月不去动一下. 上次碰到了<JavaScript高级程序设计(第3版)>感觉真的 ...

  8. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介

    前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...

  9. 【javascript学习——《javascript高级程序设计》笔记】DOM操作

    DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次节点树,允许开发人员添加.移除和修改. 1.节点层次 <html> <head& ...

随机推荐

  1. CSS边框与边界

    (上右下左依次体现)à边框的同一属性名称可以同时使用多个属性值 简化方案:border: 长度 形态 颜色 例如 border:1px solid black; 16.2 CSS中边界的使用 padd ...

  2. 【不积跬步,无以致千里】mysql 多行合并函数

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  3. Android 编程下 java.lang.NoClassDefFoundError: cn.jpush.android.api.JPushInterface 报错

    使用了极光推送的 jar 包项目在从 SVN 中检出后,假设不又一次对 jar 包和 Bulid Path 进行配置就会抛出 java.lang.NoClassDefFoundError: cn.jp ...

  4. Spring Quartz结合Spring mail定期发送邮件

    文件配置例如以下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

  5. Nginx+Keepalived+Tomcat之动静分离的web集群

    #vi /etc/nginx/nginx.conf############################################user nginx nginx;worker_process ...

  6. CentOS安装Nginx安装详解

    一.准备工作,安装依赖包,缺一不可!(推荐先用命令查看自己是否已经安装一下软件,确认没有再安装) --------------------------------------------------- ...

  7. Java,javascript,html,css的关系

    内容:,就是制作者放在页面想让访问者浏览的内容 . 主要由java语言提供数据检索.更新.业务处理等. 结构:使内容更加具有逻辑性和易用性,类似于1,2级标题,正文.列表等等. HTML 表现:用于修 ...

  8. LINUX系统备份

    LINUX系统备份 =========================================================== 作者: gswwgph(http://gswwgph.itp ...

  9. C#_wpf_userinput_数据绑定_后台对象改变,界面数据也变化

    <!--MainWindow.xaml--> <Window x:Class="UserStore.MainWindow" xmlns="http:// ...

  10. android 开源 OCR 项目 及手写识别

    http://blog.csdn.net/archfree/article/details/6023676 1)一个为Android平台,将识别由手机的相机拍摄的图像文本应用程序. http://co ...