in - JavaScript 编辑

如果指定的属性在指定的对象或其原型链中,则in 运算符返回true

语法

prop in object

参数

prop
一个字符串类型或者 symbol 类型的属性名或者数组索引(非symbol类型将会强制转为字符串)。
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是一个数组属性)

Symbol.iterator in trees // 返回true (数组可迭代,只在ES2015+上有效)


// 内置对象
"PI" in Math          // 返回true

// 自定义对象
var mycar = {make: "Honda", model: "Accord", year: 1998};
"make" in mycar  // 返回true
"model" in mycar // 返回true

in右操作数必须是一个对象值。例如,你可以指定使用String构造函数创建的字符串,但不能指定字符串文字。

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

对被删除或值为 undefined 的属性使用in

如果你使用 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,而没有删除它,则 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

规范

SpecificationStatusComment
ECMAScript (ECMA-262)
Relational Operators
Living Standard
ECMAScript 2015 (6th Edition, ECMA-262)
Relational Operators
Standard
ECMAScript 5.1 (ECMA-262)
The in Operator
Standard
ECMAScript 3rd Edition (ECMA-262)
The in Operator
StandardInitial definition. Implemented in JavaScript 1.4.

浏览器兼容

BCD tables only load in the browser

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

相关链接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:113 次

字数:6908

最后编辑:6 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文