3

调试别人的代码,发现了这个,

在此处输入图像描述

如何if-in评估为真?仅在 chrome 中发生,IE 评估为 false

4

2 回答 2

5

之所以进行评估true,是因为fileInputDOM 元素files在 Chrome 上有一个属性。它是File API的一部分。它false在 IE 上,因为他们只在 IE10 中将 File API 添加到 IE 中。我猜你必须使用 IE9 或更早版本。

这就是in操作符所做的:检查一个对象是否有一个具有给定名称的属性,无论是它自己的属性还是它从其原型对象继承的属性。

这是一个直接的 JavaScript 示例:

var obj = {foo: 42};
console.log('foo' in obj); // true
console.log('bar' in obj); // false

您会看到这在特征检测中经常使用。例如,如果您想知道用户使用的浏览器是否支持placeholder在元素上使用属性input,您可以查找反射属性:

if ('placeholder' in document.createElement('input')) {
    // It supports the placeholder attribute
}
于 2013-03-05T07:57:05.190 回答
1

in运算符可用于测试对象内部是否存在属性:

var obj = {
  foo: 'baz'
};

console.log('foo' in obj); // true

更多信息:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/in

于 2013-03-05T07:57:18.873 回答