在回答上一个问题时,我收到了这个有用的答案:
for (var i in someArray) {
if ({}.hasOwnProperty.call(someArray, i))
alert(someArray[i]);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我在哪里可以阅读{}构造?我在jQuery文档中找不到它,谷歌也不可能.
我在哪里可以阅读call()函数.搜索jQuery API站点并没有发现任何看似相关的内容.
谢谢.
{}是一种声明空对象的方法.它被称为对象文字语法,您可以在这里阅读更多相关信息.
该call()方法是一种JavaScript方法(不是jQuery).同样,您可以在此处阅读更多相关信息.基本上,call()允许您更改this正在调用的函数内部的值call().它与apply();
var array = new Array;
function foo() {
alert(this === array);
};
foo(); // false;
foo.call(array); // true
Run Code Online (Sandbox Code Playgroud)综观特别是代码中,我们遍历阵列和使用该hasOwnProperty方法来检查值(i)存在于所述someArray阵列(相对于在的原型链是someArray.
至于为什么我们使用{}.hasOwnProperty而不是someArray.hasOwnProperty,我想用户可能正在防止 hasOwnProperty被声明someArray(通过使用空对象).如果他没有这样做,那么以下可能是可能的;
var someArray = [];
someArray.hasOwnProperty = function () {
return true; // always return true... muahahaha.
}
Run Code Online (Sandbox Code Playgroud)
甚至;
var someArray = [];
someArray.hasOwnProperty = 4; // now hasOwnProperty isn't even a function. Calling someArray.hasOwnProperty() will result in an error.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |