Javascript document.documentElement在“in”语句中使用

Javascript document.documentElement在“in”语句中使用,javascript,jquery,Javascript,Jquery,我在jQuery的源代码中看到了这段代码。我是javascript的新手,我想知道这是如何工作的 if ( "getBoundingClientRect" in document.documentElement ) { // do something... } 它和我的有什么不同 if(document.documentElement.getBoundingClientRect) { // do something... } …?这是一个使用。in操作符检查目标对象是否直接或通过对象的原型具

我在jQuery的源代码中看到了这段代码。我是javascript的新手,我想知道这是如何工作的

if ( "getBoundingClientRect" in document.documentElement ) {
// do something...
}
它和我的有什么不同

if(document.documentElement.getBoundingClientRect) {
// do something...
}

…?

这是一个使用。in操作符检查目标对象是否直接或通过对象的原型具有具有给定名称的属性

它所做的是查看document.documentElement是否有一个名为getBoundingClientRect的属性,如果浏览器提供该属性,jQuery将使用该属性

它与ifdocument.documentElement.getBoundingClientRect{//do something…}有何不同

在中,不需要获取属性的值,只需检查它是否存在。还要注意,您列出的第二个表单将测试属性值的真实性。对于像getBoundingClientRect这样的函数来说,这很好,但是如果您想要测试某个值可能返回为false 0的对象,那么即使该属性存在,它也会失败

在进行特征检测时,您会经常看到这种情况。例如,如果您想知道浏览器是否支持HTML5占位符属性:

if ('placeholder' in document.createElement('input')) {
    // Yes, it does
}
这是一个例子,在这个例子中,我们不能使用if document.createElement'input'。占位符的形式,因为如果条件为false,我们将不知道它是false,因为属性不存在,还是false,因为属性存在,但有一个假值,占位符的默认值为,这确实是假的


这是一个使用。in操作符检查目标对象是否直接或通过对象的原型具有具有给定名称的属性

它所做的是查看document.documentElement是否有一个名为getBoundingClientRect的属性,如果浏览器提供该属性,jQuery将使用该属性

它与ifdocument.documentElement.getBoundingClientRect{//do something…}有何不同

在中,不需要获取属性的值,只需检查它是否存在。还要注意,您列出的第二个表单将测试属性值的真实性。对于像getBoundingClientRect这样的函数来说,这很好,但是如果您想要测试某个值可能返回为false 0的对象,那么即使该属性存在,它也会失败

在进行特征检测时,您会经常看到这种情况。例如,如果您想知道浏览器是否支持HTML5占位符属性:

if ('placeholder' in document.createElement('input')) {
    // Yes, it does
}
这是一个例子,在这个例子中,我们不能使用if document.createElement'input'。占位符的形式,因为如果条件为false,我们将不知道它是false,因为属性不存在,还是false,因为属性存在,但有一个假值,占位符的默认值为,这确实是假的

从 如果指定的属性位于指定的对象中,in运算符将返回true

语法:

prop in objectName 
支柱 表示属性名称或数组索引的字符串或数字表达式

objectName:对象的名称

因此document.documentElement是对象,getBoundingClientRect是属性

来自 如果指定的属性位于指定的对象中,in运算符将返回true

语法:

prop in objectName 
支柱 表示属性名称或数组索引的字符串或数字表达式

objectName:对象的名称

因此document.documentElement是对象,getBoundingClientRect是属性

如果a==false,则obj中的“a”与obj.a不同

如果a==false,则obj中的“a”与obj.a不同

in运算符检查给定属性是否存在于指定对象中。所以

将检查document.documentElement对象中是否存在getBoudingClientRect属性

此外,您可能需要阅读John Resig自己的表单,他已经很好地解释了使用它的原因。

in操作符检查给定属性是否存在于指定对象中。所以

将检查document.documentElement对象中是否存在getBoudingClientRect属性


此外,您可能需要阅读约翰·雷斯格本人的表格,他已经很好地解释了为什么使用该表格。

@GauthamRenganathan:很好,很高兴这有帮助。@GauthamRenganathan:很好,很高兴这有帮助。