class RubyRunJs::JsObject
Public Class Methods
new(prototype = nil)
click to toggle source
Calls superclass method
RubyRunJs::JsBaseObject::new
# File lib/ruby_run_js/objects/js_object.rb, line 7 def initialize(prototype = nil) super() @prototype = prototype end
Public Instance Methods
init_with_props(props, vals)
click to toggle source
# File lib/ruby_run_js/objects/js_object.rb, line 12 def init_with_props(props, vals) i = 0 props.each do |kv| prop, kind = kv if @own.key?(prop) if is_data_descriptor(@own[prop]) if kind != 'init' raise make_error('SyntaxError', "Invalid object initializer! Duplicate property name #{prop}") end else if kind == 'init' || (kind == 'get' && @own.key?('get')) || (kind == 'set' && @own.key?('set')) raise make_error('SyntaxError', "Invalid object initializer! Duplicate setter/getter of prop: #{prop}") end end end if kind == 'init' define_own_property(prop, { 'value' => vals[i], 'writable' => true, 'enumerable' => true, 'configurable' => true }, false) elsif kind == 'get' define_own_property(prop,{ 'get' => vals[i], 'enumerable' => true, 'configurable' => true }, false) elsif kind == 'set' define_own_property(prop,{ 'set' => vals[i], 'enumerable' => true, 'configurable' => true }, false) else raise "Invalid property kind - #{kind}. Expected one of init, get, set." end i += 1 end end