下面的链接(MDN 站点)显示“字符串泛型是非标准的,已弃用,将来可能会被删除。请注意,如果不使用下面提供的填充程序,则不能跨浏览器依赖它们。”
他们所指的方法是指他们在此声明下方提供的垫片中列出的方法吗?这是我见过的唯一对“字符串泛型”短语的引用,所以它让我感到困惑。
对于数组泛型也有同样的问题,因为该网站也提到了类似的情况。
Generic 意味着“指代所有”,在这种情况下,它意味着独立于实例的方法,即
var foo = 'bar';
String.split(foo, 'a'); // "generic" method, non-standard, will throw ReferenceErrors
foo.split('a'); // instance method, standard
您不太可能以非标准方式编写任何代码,因为它已经无法在大多数人的浏览器上运行。
如果您使用这种方式访问 bar 类型 Foo 的方法以在 Foo-like 事物上使用它们,请改为通过 Foo.prototype.bar.call ,即
var baz = {length: 2, 0: 'fizz', 1: 'buzz'}; // Array-like
Array.slice(baz, 0, 1); // bad
Array.prototype.slice.call(baz, 0, 1); // good