5

我注意到在几个 MDN 数组方法 shims 中,例如第 7 行的这个,它们使用以下语法:

var t = Object(this);

this数组在哪里。它不仅没有在我的验证器中暗示,而且我也不知道它的作用。

任何人都可以发光吗?

4

1 回答 1

3

据我所知,它的唯一用途是在您将字符串文字传递给Array.prototype.indexOf. 如果你删除它并传入一个字符串,你会得到一个错误:

TypeError:无法使用“in”运算符在字符串中搜索“0”

但是,通过将字符串文字转换为 的实例String,您最终会得到一个对象,该对象对字符串的每个字符都有一个数字属性,并且由于它是一个普通对象,您可以in在其上使用运算符,该方法将返回索引字符串中的字符:

Array.prototype.indexOf.call("hello", "e"); // Returns 1

这是一个带有强制转换的示例 toObject,这是一个没有它的示例


在更一般的情况下,将任何东西传递给Object构造函数都会尝试将该东西转换为对象。因此,您可以将字符串文字传递给它并获取Stringback 的实例,或者将数字文字传递给它并获取Number.

于 2012-10-31T09:18:36.400 回答