Javascript 我在EcmaScript规范中读到,某些方法是;“通用”;。这是什么意思?

Javascript 我在EcmaScript规范中读到,某些方法是;“通用”;。这是什么意思?,javascript,ecmascript-6,Javascript,Ecmascript 6,我在EcmaScript规范中读到某些方法是“通用的”。这是什么意思 这是否意味着调用函数时,这些方法对绑定到此值的对象很少或根本不做任何假设?在面向对象编程中,泛型函数是指使用其参数类型自动运行最合适方法的函数。从: 泛型函数是函数对象,每个对象都有一组附加的方法。对泛型函数的调用将实际参数的类型与附加方法的签名相匹配,并根据确定性规则分派给最合适的方法 这是否意味着在调用函数时,这些方法对绑定到此值的对象很少或根本不做任何假设 正是这样。无论何时阅读术语“通用方法”、“有意通用”或“非通用”

我在EcmaScript规范中读到某些方法是“通用的”。这是什么意思


这是否意味着调用函数时,这些方法对绑定到
值的对象很少或根本不做任何假设?

在面向对象编程中,泛型函数是指使用其参数类型自动运行最合适方法的函数。从:

泛型函数是函数对象,每个对象都有一组附加的方法。对泛型函数的调用将实际参数的类型与附加方法的签名相匹配,并根据确定性规则分派给最合适的方法

这是否意味着在调用函数时,这些方法对绑定到此值的对象很少或根本不做任何假设

正是这样。无论何时阅读术语“通用方法”、“有意通用”或“非通用”,都会明确指定该函数的通用性(或非通用性):
值(接收器)是具有特定内部插槽的特定类型的对象。(示例为类型化数组方法)


泛型方法不使用此类属性,也不会在找不到它们时抛出,相反,它们只使用公共(泛型“对象接口”)属性(示例为数组方法)或强制转换值来键入它们期望的类型(示例为字符串方法)。

同样,
[].slice.call(arguments)
利用slice的泛型吗?在这种情况下,泛型与多态性有什么关系?是的,是的。所有
slice
需要的是一个具有
.length
和数字属性的对象。不需要数组的
实例
左右。它基本上使用duck类型的
参数。它也是一个多态函数,因为它使用
ArraySpeciesCreate
返回不同类型的值。