Function.isCallable() / Function.isConstructor()
Why are these useful?
- Help support classes/other new function definitions in legacy framework code without significant changes
- Expose a pretty important part of the runtime to applications, who also may wish to use them
- Not require depending on slow (and inconsistent across implementations)
Function.toString()
processing or try/catch statements
The very tiny normative language:
Function.isCallable ( argument )
When the isCallable
function is called with argument argument, the following steps are taken:
- If IsCallable(argument) is false, return false.
- If argument has a [[IsClassConstructor]] internal slot with value true, return false.
- Return true.
(Should be "Return IsCallable(argument)", but adjusted to not report Class constructors as callable, as they throw unconditionally without invoking any author code)
Function.isConstructor ( argument )
When the isConstructor
function is called with argument argument, the following steps are taken:
- Return IsConstructor(argument).