Here are my comments on this section:

> static public function apply(fn /*: function*/, thisArg: Object=null, 
> argArray: Object=null)
> static public function bind(method /*: function*/, thisObj: Object=null, 
> ...args)
> static public function call(fn /*: function*/, thisObj: Object=null, ...args)
> prototype function apply(/*this: function, */ thisArg=undefined, 
> argArray=undefined)
> prototype function bind(/*this: function, */ thisObj=undefined, ...args)
> prototype function call(/*this: function, */ thisObj=undefined, ...args)

What does "/*: function*/" mean here?  Are these arguments required to have the 
function type or not?


Although apply is redundant in the presence of the splat operator, I see no 
harm in keeping it for consistency with ES3.


> *Implementation*
> 
> The implementation of the meta function |invoke| is 
> implementation-dependent.

Omit the implementation section altogether.  Saying "implementation-dependent" 
is misleading here, as its behavior should not be implementation-dependent.


> intrinsic function apply(thisArg: Object=null, argArray: Object=null)
>     Function.apply(this, thisArg, argArray);

> intrinsic function bind(thisObj: Object=null, ...args)
>     Function.helper::bind(this, thisObj, args);

> intrinsic function call(thisObj: Object=null, ...args)
>     Function.apply(this, thisObj, args);

The middle one is not like the other two.  Hmmm....  another use case for the 
splat operator.


    Waldemar
_______________________________________________
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss

Reply via email to