I read in the EcmaScript specification that certai

2020-02-14 19:57发布

问题:

I read in the EcmaScript specification that certain methods are "generic". What does this mean?

Does it mean that the methods make little or no assumptions about the object bound to the this value when the function is invoked?

回答1:

Does it mean that the methods make little or no assumptions about the object bound to the this value when the function is invoked?

Exactly that. Whenever you read the term "generic method", "intentionally generic" or "not generic", it is explicitly specified on what that function is generic (or not): the this value (receiver) being an object of a certain kind, with specific internal slots. (examples are typed array methods)

Generic methods do not use such and do not throw when they don't find them, instead they use only the public (generic "object interface") properties (examples are array methods), or cast values to type they expect (examples are string methods).



回答2:

In Object-Oriented Programming, a generic function is a function that uses the types of its arguments to automatically run the most appropriate method. From the EcmaScript draft:

Generic functions are function objects each with a set of attached methods. A call to a generic function matches the types of the actual arguments to the signatures of the attached methods and dispatches to the most appropriate method following deterministic rules.