gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:00:07 27 4
gpt4 key购买 nike

在回答之前的问题时,我收到了 this helpful answer :

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

我的问题是:

  1. 我在哪里可以阅读有关 {} 构造的信息?我在 jQuery 文档中找不到它,也无法通过 google 查找。

  2. 我在哪里可以阅读有关 call() 函数的信息。 Searching the jQuery API site没有发现任何看似相关的东西。

谢谢。

最佳答案

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

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

    var array = new Array;

    function foo() {
    alert(this === array);
    };

    foo(); // false;
    foo.call(array); // true

特别看一下代码,我们遍历一个数组并使用 hasOwnProperty 检查值 ( i ) 的方法 someArray 上是否存在数组(而不是在 someArray 的原型(prototype)链中。

至于我们为什么使用 {}.hasOwnProperty而不是 someArray.hasOwnProperty ,我猜测用户可能正在保护反对 hasOwnPropertysomeArray 申报(通过使用空对象)。如果他没有这样做,那么可能会出现以下情况;

var someArray = [];
someArray.hasOwnProperty = function () {
return true; // always return true... muahahaha.
}

甚至;

var someArray = [];
someArray.hasOwnProperty = 4; // now hasOwnProperty isn't even a function. Calling someArray.hasOwnProperty() will result in an error.

关于javascript - JavaScript 构造 `{}` 和 `call()` 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9327212/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com