mozilla
您的搜索结果

    in

    概述

    如果指定的属性存在于指定的对象中,则 in 运算符会返回 true

    语法

    prop in objectName 

    参数

    prop
    一个字符串类型的属性名或者数字类型的数组索引。
    objectName
    需要检测的对象。

    描述

    下面的例子演示了一些 in 运算符的用法。

    // 数组
    var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
    0 in trees        // 返回true
    3 in trees        // 返回true
    6 in trees        // 返回false
    "bay" in trees    // 返回false (必须使用索引号,而不是数组元素的值)
    "length" in trees // 返回true (length是一个数组属性)
    
    // 内置对象
    "PI" in Math          // 返回true
    
    // 自定义对象
    var mycar = {make: "Honda", model: "Accord", year: 1998};
    "make" in mycar  // 返回true
    "model" in mycar // 返回true
    

    右操作数必须是一个对象值,比如,可以是一个String包装对象,但不能是一个字符串原始值。

    var color1 = new String("green");
    "length" in color1 // 返回true
    var color2 = "coral";
    "length" in color2 // 报错(color2不是对象)
    

    使用delete运算符和将属性赋值为undefined

    如果你使用 delete 运算符删除了一个属性,则 in 运算符会返回 false

    var mycar = {make: "Honda", model: "Accord", year: 1998};
    delete mycar.make;
    "make" in mycar;  // 返回false
    
    var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
    delete trees[3];
    3 in trees; // 返回false
    

    如果你只是将一个属性的值赋值为 undefined,而没有用 delete 删除它,则 in 运算仍然会返回true

    var mycar = {make: "Honda", model: "Accord", year: 1998};
    mycar.make = undefined;
    "make" in mycar;  // 返回true
    
    var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
    trees[3] = undefined;
    3 in trees; // 返回true
    

    继承属性

    如果一个属性是从原型链上继承来的,in 运算符也会返回 true

    "toString" in {}; // 返回true
    

    规范

    Specification Status Comment
    ECMAScript 1st Edition. Standard Initial definition. Implemented in JavaScript 1.4
    ECMAScript 5.1 (ECMA-262)
    The in Operator
    Standard  
    ECMAScript 6 (ECMA-262)
    Relational Operators
    Release Candidate  

    浏览器兼容性

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

     

    相关链接

    文档标签和贡献者

    Contributors to this page: teoli, ziyunfei, SphinxKnight, AlexChao
    最后编辑者: AlexChao,
    隐藏侧边栏