Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/zcl_mjs.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -2113,6 +2113,12 @@ CLASS zcl_mjs IMPLEMENTATION.
rs_val = string_val( `boolean` ).
WHEN 4.
rs_val = string_val( `function` ).
WHEN 6.
IF ls_toval-obj->has( `__is_class__` ) = abap_true.
rs_val = string_val( `function` ).
ELSE.
rs_val = string_val( `object` ).
ENDIF.
WHEN OTHERS.
rs_val = string_val( `object` ).
ENDCASE.
Expand Down Expand Up @@ -2262,6 +2268,7 @@ CLASS zcl_mjs IMPLEMENTATION.
ENDIF.
lo_cls_env->define( iv_name = `__super_proto__` is_val = ls_super_cls_val ).
ENDIF.
ls_clsobj-obj->set( iv_key = `__is_class__` ir_val = box_value( bool_val( abap_true ) ) ).
LOOP AT <n>-methods INTO DATA(ls_cm).
DATA lr_mfn TYPE REF TO data.
CREATE DATA lr_mfn TYPE zif_mjs=>ty_function.
Expand Down
11 changes: 11 additions & 0 deletions src/zcl_mjs.clas.testclasses.abap
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ CLASS ltcl_test DEFINITION FOR TESTING
METHODS test_new_set FOR TESTING RAISING zcx_mjs_runtime.
METHODS test_set_has FOR TESTING RAISING zcx_mjs_runtime.
METHODS test_namespace_class FOR TESTING RAISING zcx_mjs_runtime.
METHODS test_class_typeof FOR TESTING RAISING zcx_mjs_runtime.

METHODS test262 FOR TESTING RAISING zcx_mjs_runtime.

Expand Down Expand Up @@ -845,6 +846,16 @@ CLASS ltcl_test IMPLEMENTATION.
exp = |true| ).
ENDMETHOD.

METHOD test_class_typeof.
DATA(lv_nl) = cl_abap_char_utilities=>newline.
DATA(lv_js) =
`class MyClass {}` && lv_nl &&
`console.log(typeof MyClass);`.
cl_abap_unit_assert=>assert_equals(
act = trim( zcl_mjs=>eval( lv_js ) )
exp = |function| ).
ENDMETHOD.

METHOD test262.
DATA(lv_nl) = cl_abap_char_utilities=>newline.
DATA(lv_js) =
Expand Down
Loading