我在几个MDN Array方法填充程序中注意到,例如第7行的this one,它们使用以下语法:
var t = Object(this);
this
是一个数组。它不仅没有在我的验证器中暗示,我也无能为力。
任何人都可以光明吗?
答案 0 :(得分:3)
据我所知,当你将一个字符串文字传递给Array.prototype.indexOf
时,它的唯一用途是覆盖这种情况。如果你删除它并传入一个字符串,你会收到一个错误:
TypeError:不能使用'in'运算符在字符串
中搜索'0'
但是,通过将字符串文字强制转换为String
的实例,最终会得到一个带有字符串每个字符的数字属性的对象,因为它是普通对象,所以可以使用{{ 1}}运算符,该方法将返回字符串中字符的索引:
in
此处为an example with the cast to Object
,此处为an example without it。
在更一般的情况下,将任何内容传递给Array.prototype.indexOf.call("hello", "e"); // Returns 1
构造函数都会尝试将该事物转换为对象。因此,您可以传递一个字符串文字并返回Object
的实例,或者传递一个数字文字并获取String
的实例。