class JavaScript::Function

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/javascript.rb, line 241
def initialize(*)
  @scope = JavaScript.current_scope
  super
end

Public Instance Methods

apply(target = nil, arg_values) click to toggle source
# File lib/javascript.rb, line 254
def apply(target = nil, arg_values)
  call(target, *arg_values)
end
arity() click to toggle source
# File lib/javascript.rb, line 246
def arity
  args.length
end
bind(target) click to toggle source
# File lib/javascript.rb, line 258
def bind(target)
  BoundFunction.new(target, name, args, body)
end
call(target = nil, *arg_values) click to toggle source
# File lib/javascript.rb, line 250
def call(target = nil, *arg_values)
  ::Object.instance_method(:instance_exec).bind(target).call(*arg_values, &self)
end
to_proc() click to toggle source
# File lib/javascript.rb, line 262
def to_proc
  parent_scope = @scope
  arg_names    = args.map(&:name)
  unwrapped    = body

  FunctionWrapper.new(arg_names) do |*arg_values|
    locals = Hash[ arg_names.zip(arg_values) ]
    locals[:arguments] = arg_values
    parent_scope.__spawn__(self, locals).__eval__(*arg_values, &unwrapped)
  end
end