1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
package JavaScript::QuickJS::Function;
use strict;
use warnings;
=encoding utf-8
=head1 NAME
JavaScript::QuickJS::Function - JavaScript `Function` in Perl
=head1 SYNOPSIS
my $func = JavaScript::QuickJS->new()->eval("() => 123");
print $func->(); # prints “123”; note overloading :)
=head1 DESCRIPTION
This class represents a JavaScript
L<Function|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function>
instance in Perl.
This class is not instantiated directly.
=head1 OVERLOADING
For convenience, instances of this class are callable as Perl code references.
This is equivalent to a C<call()> with $this_sv (see below) set to undef.
See the L</SYNOPSIS> above for an example.
=head1 INVOCATION METHODS
=head2 $ret = I<OBJ>->call( $this_sv, @arguments )
Like JavaScript’s method of the same name.
=head1 ACCESSOR METHODS
The following methods return their corresponding JS property:
=over
=item * C<length()>
=item * C<name()>
=back
=cut
#----------------------------------------------------------------------
sub _as_coderef;
use overload (
'&{}' => \&_as_coderef,
nomethod => \&_give_self, # xsub
);
sub _as_coderef {
my ($self) = @_;
return sub { $self->call(undef, @_) };
}
1;
|