`
wsj123
  • 浏览: 154443 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JS in的用法

    博客分类:
  • JS
阅读更多
JS in的用法

1.1简介
JavaScript中的in 操作符是对Object(对象)操作的,并不是针对数组。
1.2用法
1.2.1简单用法
    in的右边必须是对象变量。
例:
var mycar = {make: "Honda", model: "Accord", year: 1998};
if("make" in mycar){
console.log('true');
}else{
console.log('false');
}
运行结果:true
1.2.2错误的用法
    若把in 用于数组的判断时,会产生错误。
例:
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
if("oak" in trees){
console.log('true');
}else{
console.log('false');
}
运行结果:false
   反过来,把trees数组看成一个对象,然后判断对象中的元素。
例:
if(0 in trees){
console.log('true');
}else{
console.log('false');
}
运行结果:true
console.log(trees.length);
运行结果是:trees数组对象的length属性值5。
if('length' in trees){
console.log('true');
}else{
console.log('false');
}
运行结果true,因为length是trees数组对象的属性。
1.2.3 用in来简化if语句多个“或”条件的情况
例:
if(foo == 'bar' || foo == 'foobar' || foo == 'foo'){
//...
}
简化为:
if(foo in { 'bar':'', 'foobar':'', 'foo':'' }){
//...
}
1.2.4对数组判断的正确方法
1、通过循环来解决
function in_array(searchString,array){
  for(var i=0;i<array.length;i++){
    if(searchString == array[i]){
return true;
      }
  return false;
}
if(in_array('oak',trees)){
console.log('true');
}else{
console.log('false');
}
2、把数组一一映射到对象的属性,再用in判断。
function oc(a){
  var o = {}; //相当于var o = new Object();
  for(var i=0;i<a.length;i++){
    o[a[i]]=''; //注意该写法,不能写成o.a[i]
  }
  return o;
}
if('oak' in oc(trees)){
console.log('true'); 
}else{
console.log('false');
}
运行结果:true
注意:obj.key和obj['key']可以互通,但在for(;;)和for(in)语句中,对象属性的写法是obj['key'],而不是obj.key。
1.3使用in 操作符的注意事项
1、区分要判断的是数组还是对象。
2、in 面向的必须是对象
例:
var color1 = new String("green");
"length" in color1//返回值true
var color2 = "coral";
"length" in color2// generates an error (color is not a String object)

    JavaScript字符串并不能直接就处理为字符串对象。FireFox 中会报“invalid 'in' operand color2”,IE 中会报“缺少对象”。
3、对象属性被删除(deleted)或未定义(undefined)的判断
    用delete删除对象的属性值:
例1:
var mycar = {make: "Honda", model: "Accord", year: 1998};
delete mycar.make;
"make" in mycar; //返回值false
例2:
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
delete trees[3];
3 in trees; //返回值false
    把对象属性值设置为undefined:
例1:
var mycar = {make: "Honda", model: "Accord", year: 1998};
mycar.make = undefined;
"make" in mycar; //返回值true
例2:
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
trees[3] = undefined;
3 in trees; //返回值true
1.4 与for的应用
1.4.1 简单用法
然数组可以转换为对象,对象也可以看成是“关联数组”。
例1-1:
var a = ["a","b","c"];
for(var n in a){ //亦可以是for(n in a)
   console.log(a[n]);
}
运行结果:
a
b
c
for(n in a){
console.log("false");
}
运行结果:false
for(n in a){
console.log("turn");
console.log(a[n]);
}
运行结果:
turn
a
turn
b
turn
c
例1-2:
var a = {"first":1,"second":2,"third":3};
for(n in a){
console.log(n+"=>"+a[n]);
}
运行结果:
first=>1
second=>2
third=>3
例2-1:
var oneArray=new Array();
oneArray["firstKey"]="firstValue";
oneArray["secondKey"]="secondValue";
for(key in oneArray){
  console.log(key+'=>'+oneArray[key]);
}
运行结果:
firstKey=>firstValue
secondKey=>secondValue
例2-2:
var oneObject={};
oneObject.firstKey="firstValue";
oneObject.secondKey="secondValue";
for(key in oneObject){
  console.log(key+'=>'+oneObject[key]);
}
运行结果:
firstKey=>firstValue
secondKey=>secondValue
1.4.2 判断一个对象是否可以进行for in穷举——propertyIsEnumerable属性
1、用法
propertyIsEnumerable属性的返回Boolean值,指出所指定的属性是否为一个对象的一部分以及该属性是否是可列举的。
2、语法:
object.propertyIsEnumerable(proName);
3、参数介绍
Object 必选项,一个对象。
proName 必选项,一个属性名称的字符串值。
如果 proName 存在于 object 中且可以使用一个 For…In 循环穷举,那么propertyIsEnumerable属性返回true。如果 object不具有所指定的属性或者所指定的属性不是可列举的,那么propertyIsEnumerable属性返回false。典型地,预定义的属性不是可列举的,而用户定义的属性总是可列举的。
注意:propertyIsEnumerable属性不考虑原型链中的对象。
例如:
function testIsEnumerable(){
  var a = new Array("apple", "banana", "cactus");
  return(a.propertyIsEnumerable(1));
}
分享到:
评论

相关推荐

    js中for in的用法示例解析

    i++)这样的用法一般都可以用for in 来替代。 例如: 代码如下: var a = [“a”,”b”,”c”]; for(var el in a){ alert&#40;a[el]&#41;; } 这个就是穷举出a中的所有元素,当然上面这个例子是可以用 代码如下: for...

    js中for in语句的用法讲解.docx

    js 中 for in 语句的用法讲解 js 中 for in 语句是一种遍历对象属性的语句,它可以遍历对象的可枚举属性。for in 语句的基本语法为:for (variable in object) statement,其中 variable 是声明的一个变量,object ...

    js中for in的用法示例解析.docx

    首先,让我们看一个简单的`for...in`循环的用法: ```javascript var person = { firstName: "John", lastName: "Doe", age: 30 }; for (var prop in person) { console.log(prop + ": " + person[prop]); } `...

    aos.js动画的用法

    插件描述:aos.js是一款效果超赞的页面滚动元素动画jQuery动画库插件。该动画库可以在页面滚动时提供28种不同的元素动画效果,以及多种easing效果。在页面往回滚动时,元素会恢复到原来的状态。 简要教程 aos.js是一...

    Ext JS in Action

    - **A Framework Apart (与众不同的框架)**:这一章节深入探讨了Ext JS的设计理念及其与其他JavaScript库的区别之处。通过对架构、设计理念和开发模式的介绍,帮助读者理解为什么Ext JS能够成为构建复杂Web应用的...

    js中for in语句的用法讲解

     for(variable in object)  statement variable 是声明一个变量的var语句,数组的一个元素或者是对象的一个属性 在循环体内部,对象的一个属性名会被作为字符串赋给变量variable。 注意:对象的有些属性以相同的...

    Node.js in Action, Second Editi - Bradley Meck Alex Young.pdf

    ### Node.js in Action, Second Edition – Bradley Meck & Alex Young #### 核心知识点概览 **本书概览:** 《Node.js in Action, Second Edition》由Bradley Meck与Alex Young共同撰写,是一本全面深入介绍Node...

    javascript中的遍历for in 以及with的用法

    for in 循环执行一个对象中的属性 with语句: (对象操作语句)  功能:为一段程序建立默认对象  格式: 代码如下:  with(&lt;对象&gt;){  &lt;语句组&gt;  } 具体示例: 代码如下: [removed] function member(name,...

    JS for…in 遍历语句用法实例分析

    本文实例讲述了JS for…in 遍历语句用法。分享给大家供大家参考,具体如下: for…in 语句用于对数组或者对象的属性进行循环操作。 for (变量 in 对象) {  在此执行代码 } 这里的“变量”用来指定变量,指定的变量...

    【JavaScript源代码】JS中for,for...in,for...of和forEach的区别和用法实例.docx

    ### JavaScript中的循环结构详解 在JavaScript编程中,循环是一种非常重要的控制流程结构,它能够帮助开发者重复执行一段代码,直到满足特定的终止条件。本文主要介绍四种常用的循环结构:`for`循环、`for...in`...

    javascript in a day 一天学完JavaScript

    JavaScript,也常被称为JS,是一种轻量级的编程语言,主要应用于网页和网络应用开发。在一天内学习JavaScript,虽然时间紧迫,但并非不可能。JavaScript是互联网上最广泛使用的脚本语言,它允许开发者实现交互式的...

    js经典使用例子 js经典使用例子

    JavaScript,简称JS,是一种广泛应用于Web开发的轻量级编程语言,主要负责客户端的交互和动态效果。在网页中,JavaScript通常与HTML和CSS结合,构成网页内容展示、用户交互和数据处理的核心部分。本篇将围绕“js经典...

    javascript中in运算符用法分析

    它的基本用法是将一个属性名(可以是字符串或者可以被转换为字符串的值)放在in关键字的左边,然后将一个对象放在in关键字的右边。如果对象包含有这个属性名所指定的属性,in运算符就会返回true,否则返回false。 ...

    Javascript中For In语句用法实例

    JavaScript 提供了多种控制语句,其中包括“for...in”语句,这是一种为对象属性或者数组元素提供便捷遍历方式的结构。 首先,我们需要理解在JavaScript中的对象以及数组的概念。对象是键值对的集合,而数组则是...

    Node.js.in.Action 最终版

    此外,作者还详细解释了Node.js如何利用JavaScript实现服务器端编程。 - **核心知识点**: - Node.js的发展历程及其背后的动机。 - Node.js的非阻塞I/O模型是如何工作的。 - 为什么Node.js非常适合构建实时Web...

    extjs 3.0最新的教程 Ext JS in Action (MEAP)2009

    《Ext JS in Action (MEAP) 2009》是针对Ext JS 3.0框架的一本权威教程,旨在帮助开发者深入理解和掌握这一强大的JavaScript库。Ext JS是一款用于构建富客户端Web应用的开源框架,它提供了丰富的组件库、数据绑定...

    javascript的一些用法

    根据提供的文件内容,我们可以总结出以下几个JavaScript相关的知识点: ### 1. LINQ to SQL 查询语法在 JavaScript 中的应用 虽然从代码片段来看,这段代码更像是 C# 的 LINQ to SQL 的查询语法,但在JavaScript...

Global site tag (gtag.js) - Google Analytics