什么是JavaScript构造`{}`和`call()`?

时间:2012-02-17 11:14:47

标签: javascript syntax

在回答上一个问题时,我收到了this helpful answer

for (var i in someArray) {
    if ({}.hasOwnProperty.call(someArray, i))
        alert(someArray[i]); 
}

我的问题是:

  1. 我在哪里可以阅读{}构造?我在jQuery文档中找不到它,谷歌也不可能找到它。

  2. 我在哪里可以阅读call()函数。 Searching the jQuery API site并未发现任何看似相关的内容。

  3. 感谢。

3 个答案:

答案 0 :(得分:5)

  1. {}一种方式来声明一个空对象。它被称为对象文字语法,您可以阅读更多相关信息here

  2. call()方法是一种JavaScript方法(不是jQuery)。同样,您可以阅读更多相关信息here。基本上,call()允许您更改正在调用this的函数内call()的值。它与apply();

    有关
    var array = new Array;
    
    function foo() {
        alert(this === array);
    };
    
    foo(); // false;
    foo.call(array); // true
    
  3. 特别是查看代码,我们循环遍历数组,并使用hasOwnProperty方法检查{(1}})存在 {{1}数组(而不是i的原型链。

    至于为什么我们使用someArray而不是someArray,我猜测用户可能正在保护免受 {{1在{}.hasOwnProperty上声明(通过使用空对象)。如果他没有这样做,那么以下就可能了;

    someArray.hasOwnProperty

    甚至;

    hasOwnProperty

答案 1 :(得分:4)

  1. {}是一个与jQuery无关的对象文字(纯javascript)
  2. http://www.dyn-web.com/tutorials/obj_lit.php

    1. 调用方法再次是纯javascript,而不是jQuery特定的
    2. http://www.webreference.com/js/column26/call.html

      谷歌在'javascript object literal'或'javascript call method'上面的几个例子。

答案 2 :(得分:3)

你混淆了jQuery和JavaScript。

{}是一个JavaScript构造,是一个空对象。

call() method也是JavaScript的一部分