FunctionProxy class
A Proxy subtype to JavaScript functions.
class FunctionProxy extends Proxy implements Serializable<FunctionProxy> /*,Function*/ { FunctionProxy._internal(SendPortSync port, id) : super._internal(port, id); // TODO(vsm): This allows calls with a limited number of arguments // in the context of dartbug.com/9283. Eliminate pending the resolution // of this bug. Note, if this Proxy is called with more arguments then // allowed below, it will trigger the 'call' path in Proxy.noSuchMethod // - and still work correctly in unminified mode. call([arg1 = _undefined, arg2 = _undefined, arg3 = _undefined, arg4 = _undefined, arg5 = _undefined, arg6 = _undefined]) { var arguments = _pruneUndefined(arg1, arg2, arg3, arg4, arg5, arg6); return Proxy._forward(this, '', 'apply', arguments); } }
Extends
Proxy > FunctionProxy
Implements
Operators
dynamicoperator [](arg) #
inherited from Proxy
operator[](arg) => _forward(this, '[]', 'method', [ arg ]);
dynamicoperator []=(key, value) #
inherited from Proxy
operator[]=(key, value) => _forward(this, '[]=', 'method', [ key, value ]);
dynamicoperator ==(other) #
inherited from Proxy
The equality operator.
The default behavior for all Object
s is to return true if and
only if this
and
other are the same object.
If a subclass overrides the equality operator it should override
the hashCode
method as well to maintain consistency.
docs inherited from Object
operator==(other) => identical(this, other) ? true : (other is Proxy && _jsPortEquals.callSync([_serialize(this), _serialize(other)]));
Methods
dynamiccall([arg1 = _undefined, arg2 = _undefined, arg3 = _undefined, arg4 = _undefined, arg5 = _undefined, arg6 = _undefined]) #
call([arg1 = _undefined, arg2 = _undefined, arg3 = _undefined, arg4 = _undefined, arg5 = _undefined, arg6 = _undefined]) { var arguments = _pruneUndefined(arg1, arg2, arg3, arg4, arg5, arg6); return Proxy._forward(this, '', 'apply', arguments); }
dynamicnoSuchMethod(InvocationMirror invocation) #
inherited from Proxy
noSuchMethod
is invoked when users invoke a non-existant method
on an object. The name of the method and the arguments of the
invocation are passed to noSuchMethod
in an InvocationMirror
.
If noSuchMethod
returns a value, that value becomes the result of
the original invocation.
The default behavior of noSuchMethod
is to throw a
noSuchMethodError
.
docs inherited from Object
noSuchMethod(InvocationMirror invocation) { String member = invocation.memberName; // If trying to access a JavaScript field/variable that starts with // _ (underscore), Dart treats it a library private and member name // it suffixed with '@internalLibraryIdentifier' which we have to // strip before sending over to the JS side. if (member.indexOf('@') != -1) { member = member.substring(0, member.indexOf('@')); } String kind; List args = invocation.positionalArguments; if (args == null) args = []; // TODO(vsm): Clean this up once InvocationMirrors settle down. The 'get:' // and 'set:' form is still used by Dartium and the trunk version of // Dart2JS. if (invocation.isGetter) { kind = 'get'; if (member.startsWith('get:')) { member = member.substring(4); } } else if (invocation.isSetter) { kind = 'set'; if (member.endsWith('=')) { member = member.substring(0, member.length - 1); } if (member.startsWith('set:')) { member = member.substring(4); } } else if (member.startsWith('get:')) { kind = 'get'; member = member.substring(4); } else if (member.startsWith('set:')) { kind = 'set'; member = member.substring(4); } else if (member == 'call') { // A 'call' (probably) means that this proxy was invoked directly // as if it was a function. Map this to JS function application. kind = 'apply'; } else { kind = 'method'; } return _forward(this, member, kind, args); }