blob: feb9432da5e22d269cd7c0a1e39249980422c8d6 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 1.5.5">
<meta name="author" content="2019-08-08 13:15:33 CEST">
<title>N4JS Language Specification</title>
<link rel="stylesheet" href="styles/spec.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<!-- ************* docinfo ******************************************************************* -->
<!-- ************* Favicon ************-->
<link rel="icon" href="images/favicon.ico" />
<!-- ************* Back-to-top JQuery ************* -->
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
<link href="styles/prism.min.css" rel="stylesheet" />
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
<!-- ************* Styles ************* -->
<link rel="stylesheet" type="text/css" href="styles/n4jsspec-adoc.css">
<!-- ****************** NavBar ****************** -->
<div id="menubar">
<div class="banner">
<a href="https://www.eclipse.org/n4js/#"><img id="logo" src="images/n4js-logo.png" alt="Eclipse N4JS"></a>
</div>
<ul>
<li><a href="index.html">Index</a></li>
</ul>
</div>
<!-- ************* docinfo ******************************************************************* -->
<style>
.admonitionblock td.icon .icon-todo:before{content:"\f249";color:#f4ee42}
</style>
</head>
<body class="book toc2 toc-left">
<div id="header">
<h1>N4JS Language Specification</h1>
<div class="details">
<span id="author" class="author">2019-08-08 13:15:33 CEST</span><br>
<span id="revnumber">version 0.9</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="introduction.html#_introduction">1. Introduction</a>
<ul class="sectlevel2">
<li><a href="introduction.html#_notation">1.1. Notation</a>
<ul class="sectlevel3">
<li><a href="introduction.html#_grammar-notation">1.1.1. Grammar Notation</a></li>
<li><a href="introduction.html#_type-judgments-and-rules-and-constraints-notation">1.1.2. Type Judgments and Rules and Constraints Notation</a>
<ul class="sectlevel4">
<li><a href="introduction.html#_typing-rules-and-judgments">1.1.2.1. Typing Rules and Judgments</a></li>
<li><a href="introduction.html#_types-of-an-element">1.1.2.2. Types of an Element</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="introduction.html#_auxiliary-functions">1.2. Auxiliary Functions</a>
<ul class="sectlevel3">
<li><a href="introduction.html#_binding">1.2.1. Binding</a></li>
<li><a href="introduction.html#_merging-types">1.2.2. Merging Types</a>
<ul class="sectlevel4">
<li><a href="introduction.html#_logic-formulas">1.2.2.1. Logic Formulas</a></li>
</ul>
</li>
<li><a href="introduction.html#_symbols-and-font-convention">1.2.3. Symbols and Font Convention</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="grammar.html#_grammar">2. Grammar</a>
<ul class="sectlevel2">
<li><a href="grammar.html#_lexical-conventions">2.1. Lexical Conventions</a>
<ul class="sectlevel3">
<li><a href="grammar.html#_identifier-names-and-identifiers">2.1.1. Identifier Names and Identifiers</a></li>
<li><a href="grammar.html#_this-keyword">2.1.2. This Keyword</a></li>
<li><a href="grammar.html#_regular-expression-literals">2.1.3. Regular Expression Literals</a></li>
<li><a href="grammar.html#_automatic-semicolon-insertion">2.1.4. Automatic Semicolon Insertion</a></li>
<li><a href="grammar.html#_jsdoc">2.1.5. JSDoc</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="names.html#_names">3. Names</a>
<ul class="sectlevel2">
<li><a href="names.html#_access-control">3.1. Access Control</a></li>
<li><a href="names.html#_accessibility-of-types-top-level-variables-and-function-declarations">3.2. Accessibility of Types, Top-Level Variables and Function Declarations</a>
<ul class="sectlevel3">
<li><a href="names.html#_accessibility-of-members">3.2.1. Accessibility of Members</a></li>
<li><a href="names.html#_valid-names">3.2.2. Valid Names</a></li>
<li><a href="names.html#_qualified-names">3.2.3. Qualified Names</a></li>
<li><a href="names.html#_name-duplicates">3.2.4. Name Duplicates</a>
<ul class="sectlevel4">
<li><a href="names.html#_lexical-environment">3.2.4.1. Lexical Environment</a></li>
<li><a href="names.html#_duplicates-and-shadowing">3.2.4.2. Duplicates and Shadowing</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="types.html#_types">4. Types</a>
<ul class="sectlevel2">
<li><a href="types.html#_overview">4.1. Overview</a></li>
<li><a href="types.html#_type-expressions">4.2. Type Expressions</a>
<ul class="sectlevel3">
<li><a href="types.html#_syntax">4.2.1. Syntax</a></li>
<li><a href="types.html#_properties">4.2.2. Properties</a></li>
<li><a href="types.html#_semantics">4.2.3. Semantics</a></li>
</ul>
</li>
<li><a href="types.html#_type-inference">4.3. Type Inference</a></li>
<li><a href="types.html#_generic-and-parameterized-types">4.4. Generic and Parameterized Types</a>
<ul class="sectlevel3">
<li><a href="types.html#_generic-types">4.4.1. Generic Types</a></li>
<li><a href="types.html#_type-variables">4.4.2. Type Variables</a></li>
<li><a href="types.html#_parameterized-types">4.4.3. Parameterized Types</a></li>
</ul>
</li>
<li><a href="types.html#_primitive-ecmascript-types">4.5. Primitive ECMAScript Types</a>
<ul class="sectlevel3">
<li><a href="types.html#_undefined-type">4.5.1. Undefined Type</a></li>
<li><a href="types.html#_null-type">4.5.2. Null Type</a></li>
<li><a href="types.html#_primitive-boolean-type">4.5.3. Primitive Boolean Type</a></li>
<li><a href="types.html#_primitive-string-type">4.5.4. Primitive String Type</a></li>
<li><a href="types.html#_primitive-number-type">4.5.5. Primitive Number Type</a></li>
<li><a href="types.html#_primitive-type-int">4.5.6. Primitive Type int</a></li>
<li><a href="types.html#_primitive-symbol-type">4.5.7. Primitive Symbol Type</a></li>
</ul>
</li>
<li><a href="types.html#_primitive-n4js-types">4.6. Primitive N4JS Types</a>
<ul class="sectlevel3">
<li><a href="types.html#_any-type">4.6.1. Any Type</a>
<ul class="sectlevel4">
<li><a href="types.html#any-type-semantics">4.6.1.1. Semantics</a></li>
<li><a href="types.html#any-type-type-inference">4.6.1.2. Type Inference</a>
<ul class="sectlevel5">
<li><a href="types.html#_default-type-of-variables">4.6.1.2.1. Default Type of Variables</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="types.html#_void-type">4.6.2. Void Type</a>
<ul class="sectlevel4">
<li><a href="types.html#void-type-semantics">4.6.2.1. Semantics</a></li>
</ul>
</li>
<li><a href="types.html#_unknown-type">4.6.3. Unknown Type</a></li>
<li><a href="types.html#_primitive-pathselector-and-i18nkey">4.6.4. Primitive Pathselector and I18nKey</a>
<ul class="sectlevel4">
<li><a href="types.html#pathselector-semantics">4.6.4.1. Semantics</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="types.html#_built-in-ecmascript-object-types">4.7. Built-in ECMAScript Object Types</a>
<ul class="sectlevel3">
<li><a href="types.html#ECMAScript-objects-semantics">4.7.1. Semantics</a></li>
<li><a href="types.html#_object-type">4.7.2. Object Type</a></li>
<li><a href="types.html#_function-object-type">4.7.3. Function-Object-Type</a></li>
<li><a href="types.html#_array-object-type">4.7.4. Array Object Type</a></li>
<li><a href="types.html#_string-object-type">4.7.5. String Object Type</a></li>
<li><a href="types.html#_boolean-object-type">4.7.6. Boolean Object Type</a></li>
<li><a href="types.html#_number-object-type">4.7.7. Number Object Type</a></li>
<li><a href="types.html#_global-object-type">4.7.8. Global Object Type</a></li>
<li><a href="types.html#_symbol">4.7.9. Symbol</a></li>
<li><a href="types.html#_promise">4.7.10. Promise</a></li>
<li><a href="types.html#_iterator-interface">4.7.11. Iterator Interface</a></li>
<li><a href="types.html#_iterable-interface">4.7.12. Iterable Interface</a></li>
</ul>
</li>
<li><a href="types.html#_built-in-n4js-types">4.8. Built-In N4JS Types</a>
<ul class="sectlevel3">
<li><a href="types.html#_n4object">4.8.1. N4Object</a>
<ul class="sectlevel4">
<li><a href="types.html#N4Object-semantics">4.8.1.1. Semantics</a></li>
</ul>
</li>
<li><a href="types.html#_n4class">4.8.2. N4Class</a></li>
<li><a href="types.html#IterableN">4.8.3. IterableN</a></li>
</ul>
</li>
<li><a href="types.html#_type-modifiers">4.9. Type Modifiers</a>
<ul class="sectlevel3">
<li><a href="types.html#Type_Modifiers_Dynamic">4.9.1. Dynamic</a></li>
<li><a href="types.html#_optional-return-types">4.9.2. Optional Return Types</a></li>
</ul>
</li>
<li><a href="types.html#_union-and-intersection-type-composed-types">4.10. Union and Intersection Type (Composed Types)</a>
<ul class="sectlevel3">
<li><a href="types.html#_union-type">4.10.1. Union Type</a>
<ul class="sectlevel4">
<li><a href="types.html#union-type-syntax">4.10.1.1. Syntax</a></li>
<li><a href="types.html#union-type-semantics">4.10.1.2. Semantics</a></li>
<li><a href="types.html#_warnings">4.10.1.3. Warnings</a></li>
</ul>
</li>
<li><a href="types.html#_intersection-type">4.10.2. Intersection Type</a>
<ul class="sectlevel4">
<li><a href="types.html#intersection-type-syntax">4.10.2.1. Syntax</a></li>
<li><a href="types.html#intersection-type-semantics">4.10.2.2. Semantics</a></li>
<li><a href="types.html#_warnings-2">4.10.2.3. Warnings</a></li>
</ul>
</li>
<li><a href="types.html#_composed-types-in-wildcards">4.10.3. Composed Types in Wildcards</a></li>
<li><a href="types.html#_property-access-for-composed-types">4.10.4. Property Access for Composed Types</a>
<ul class="sectlevel4">
<li><a href="types.html#_properties-of-union-type">4.10.4.1. Properties of Union Type</a>
<ul class="sectlevel5">
<li><a href="types.html#_remarks-on-union-type-s-members">4.10.4.1.1. Remarks on union type’s members:</a></li>
</ul>
</li>
<li><a href="types.html#_properties-of-intersection-type">4.10.4.2. Properties of Intersection Type</a>
<ul class="sectlevel5">
<li><a href="types.html#_remarks-on-intersection-type-s-methods">4.10.4.2.1. Remarks on intersection type’s methods:</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="types.html#_constructor-and-classifier-type">4.11. Constructor and Classifier Type</a>
<ul class="sectlevel3">
<li><a href="types.html#_syntax-3">4.11.1. Syntax</a></li>
<li><a href="types.html#_semantics-2">4.11.2. Semantics</a></li>
<li><a href="types.html#_constructors-and-prototypes-in-ecmascript-2015">4.11.3. Constructors and Prototypes in ECMAScript 2015</a></li>
</ul>
</li>
<li><a href="types.html#_this-type">4.12. This Type</a>
<ul class="sectlevel3">
<li><a href="types.html#this-type-syntax">4.12.1. Syntax</a></li>
<li><a href="types.html#this-keyword-semantics">4.12.2. Semantics</a></li>
</ul>
</li>
<li><a href="types.html#_enums">4.13. Enums</a>
<ul class="sectlevel3">
<li><a href="types.html#_enums-n4js">4.13.1. Enums (N4JS)</a>
<ul class="sectlevel4">
<li><a href="types.html#enums-syntax">4.13.1.1. Syntax</a></li>
<li><a href="types.html#enums-semantics">4.13.1.2. Semantics</a></li>
</ul>
</li>
<li><a href="types.html#_string-based-enums">4.13.2. String-Based Enums</a></li>
</ul>
</li>
<li><a href="types.html#_short-hand-syntax">4.14. Short-Hand Syntax</a>
<ul class="sectlevel3">
<li><a href="types.html#_array-short-hand-syntax">4.14.1. Array Short-Hand Syntax</a></li>
<li><a href="types.html#_iterablen-short-hand-syntax">4.14.2. IterableN Short-Hand Syntax</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="classifiers.html#_classifiers">5. Classifiers</a>
<ul class="sectlevel2">
<li><a href="classifiers.html#_n4js-specific-classifiers">5.1. N4JS Specific Classifiers</a>
<ul class="sectlevel3">
<li><a href="classifiers.html#_properties-2">5.1.1. Properties</a></li>
<li><a href="classifiers.html#_common-semantics-of-classifiers">5.1.2. Common Semantics of Classifiers</a></li>
<li><a href="classifiers.html#_classes">5.1.3. Classes</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#_definition-of-classes">5.1.3.1. Definition of Classes</a>
<ul class="sectlevel5">
<li><a href="classifiers.html#class-syntax">5.1.3.1.1. Syntax</a></li>
<li><a href="classifiers.html#class-properties">5.1.3.1.2. Properties</a></li>
<li><a href="classifiers.html#class-type-inference">5.1.3.1.3. Type Inference</a></li>
</ul>
</li>
<li><a href="classifiers.html#class-semantics">5.1.3.2. Semantics</a></li>
<li><a href="classifiers.html#_final-modifier">5.1.3.3. Final Modifier</a></li>
<li><a href="classifiers.html#_abstract-classes">5.1.3.4. Abstract Classes</a></li>
<li><a href="classifiers.html#_non-instantiable-classes">5.1.3.5. Non-Instantiable Classes</a></li>
<li><a href="classifiers.html#_superclass">5.1.3.6. Superclass</a></li>
</ul>
</li>
<li><a href="classifiers.html#_interfaces">5.1.4. Interfaces</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#_definition-of-interfaces">5.1.4.1. Definition of Interfaces</a>
<ul class="sectlevel5">
<li><a href="classifiers.html#interfaces-syntax">5.1.4.1.1. Syntax</a></li>
<li><a href="classifiers.html#interfaces-properties">5.1.4.1.2. Properties</a></li>
<li><a href="classifiers.html#interfaces-type-inference">5.1.4.1.3. Type Inference</a></li>
<li><a href="classifiers.html#interfaces-semantics">5.1.4.1.4. Semantics</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="classifiers.html#_generic-classifiers">5.1.5. Generic Classifiers</a></li>
<li><a href="classifiers.html#sec:definition-site-variance">5.1.6. Definition-Site Variance</a></li>
</ul>
</li>
<li><a href="classifiers.html#_members">5.2. Members</a>
<ul class="sectlevel3">
<li><a href="classifiers.html#_syntax-4">5.2.1. Syntax</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#_properties-3">5.2.1.1. Properties</a></li>
</ul>
</li>
<li><a href="classifiers.html#_semantics-3">5.2.2. Semantics</a></li>
<li><a href="classifiers.html#_methods">5.2.3. Methods</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#_syntax-5">5.2.3.1. Syntax</a></li>
<li><a href="classifiers.html#_properties-4">5.2.3.2. Properties</a></li>
<li><a href="classifiers.html#_semantics-4">5.2.3.3. Semantics</a></li>
<li><a href="classifiers.html#_final-methods">5.2.3.4. Final Methods</a></li>
<li><a href="classifiers.html#_abstract-methods">5.2.3.5. Abstract Methods</a></li>
<li><a href="classifiers.html#_generic-methods">5.2.3.6. Generic Methods</a></li>
</ul>
</li>
<li><a href="classifiers.html#_default-methods-in-interfaces">5.2.4. Default Methods in Interfaces</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#_asynchronous-methods">5.2.4.1. Asynchronous Methods</a></li>
</ul>
</li>
<li><a href="classifiers.html#_constructors">5.2.5. Constructors</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#_structural-this-type-in-constructor">5.2.5.1. Structural This Type in Constructor</a></li>
<li><a href="classifiers.html#spec-constructor">5.2.5.2. @Spec Constructor</a></li>
<li><a href="classifiers.html#_callable-constructors">5.2.5.3. Callable Constructors</a></li>
<li><a href="classifiers.html#_covariant-constructors">5.2.5.4. Covariant Constructors</a></li>
</ul>
</li>
<li><a href="classifiers.html#_data-fields">5.2.6. Data Fields</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#data-fields-syntax">5.2.6.1. Syntax</a></li>
<li><a href="classifiers.html#data-fields-properties">5.2.6.2. Properties</a>
<ul class="sectlevel5">
<li><a href="classifiers.html#data-fields-semantics">5.2.6.2.1. Semantics</a></li>
<li><a href="classifiers.html#data-fields-type-inference">5.2.6.2.2. Type Inference</a></li>
</ul>
</li>
<li><a href="classifiers.html#_assignment-modifiers">5.2.6.3. Assignment Modifiers</a></li>
<li><a href="classifiers.html#_field-accessors-getter-setter">5.2.6.4. Field Accessors (Getter/Setter)</a>
<ul class="sectlevel5">
<li><a href="classifiers.html#field-acessors-syntax">5.2.6.4.1. Syntax</a></li>
<li><a href="classifiers.html#field-acessors-properties">5.2.6.4.2. Properties</a></li>
<li><a href="classifiers.html#field-accessors-semantics">5.2.6.4.3. Semantics</a></li>
</ul>
</li>
<li><a href="classifiers.html#optional-fields">5.2.6.5. Optional Fields</a>
<ul class="sectlevel5">
<li><a href="classifiers.html#_syntax-6">5.2.6.5.1. Syntax</a></li>
<li><a href="classifiers.html#_semantics-5">5.2.6.5.2. Semantics</a></li>
<li><a href="classifiers.html#_background">5.2.6.5.3. Background</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="classifiers.html#_static-members">5.2.7. Static Members</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#_access-from-and-to-static-members">5.2.7.1. Access From and To Static Members</a></li>
<li><a href="classifiers.html#_generic-static-methods">5.2.7.2. Generic static methods</a></li>
<li><a href="classifiers.html#_static-members-of-interfaces">5.2.7.3. Static Members of Interfaces</a></li>
</ul>
</li>
<li><a href="classifiers.html#_redefinition-of-members">5.2.8. Redefinition of Members</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#_overriding-of-members">5.2.8.1. Overriding of Members</a></li>
<li><a href="classifiers.html#_implementation-of-members">5.2.8.2. Implementation of Members</a>
<ul class="sectlevel5">
<li><a href="classifiers.html#_member-consumption">5.2.8.2.1. Member Consumption</a></li>
<li><a href="classifiers.html#_member-implementation">5.2.8.2.2. Member Implementation</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="classifiers.html#_structural-typing">5.3. Structural Typing</a>
<ul class="sectlevel3">
<li><a href="classifiers.html#_syntax-7">5.3.1. Syntax</a></li>
<li><a href="classifiers.html#_definition-site-structural-typing">5.3.2. Definition Site Structural Typing</a></li>
<li><a href="classifiers.html#_use-site-structural-typing">5.3.3. Use-Site Structural Typing</a></li>
<li><a href="classifiers.html#structural-readWriteInit-field-typing">5.3.4. Structural Read-only, Write-only and Initializer Field Typing</a></li>
<li><a href="classifiers.html#_public-setter-annotated-with-code-providesinitializer-code">5.3.5. Public Setter Annotated With <code>ProvidesInitializer</code></a></li>
<li><a href="classifiers.html#_structural-types-with-optional-fields">5.3.6. Structural Types With Optional Fields</a></li>
<li><a href="classifiers.html#_structural-types-with-access-modifier">5.3.7. Structural Types With Access Modifier</a></li>
<li><a href="classifiers.html#_structural-types-with-additional-members">5.3.8. Structural Types With Additional Members</a>
<ul class="sectlevel4">
<li><a href="classifiers.html#_syntax-8">5.3.8.1. Syntax</a>
<ul class="sectlevel5">
<li><a href="classifiers.html#_semantics-6">5.3.8.1.1. Semantics</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="functions.html#_functions">6. Functions</a>
<ul class="sectlevel2">
<li><a href="functions.html#_function-type">6.1. Function Type</a>
<ul class="sectlevel3">
<li><a href="functions.html#_properties-5">6.1.1. Properties</a></li>
<li><a href="functions.html#function-type-inference">6.1.2. Type Inference</a></li>
<li><a href="functions.html#_autoboxing-of-function-type">6.1.3. Autoboxing of Function Type</a></li>
<li><a href="functions.html#_arguments-object">6.1.4. Arguments Object</a></li>
</ul>
</li>
<li><a href="functions.html#_ecmascript-5-function-definition">6.2. ECMAScript 5 Function Definition</a>
<ul class="sectlevel3">
<li><a href="functions.html#_function-declaration">6.2.1. Function Declaration</a>
<ul class="sectlevel4">
<li><a href="functions.html#_syntax-9">6.2.1.1. Syntax</a></li>
<li><a href="functions.html#_semantics-8">6.2.1.2. Semantics</a></li>
</ul>
</li>
<li><a href="functions.html#_function-expression">6.2.2. Function Expression</a>
<ul class="sectlevel4">
<li><a href="functions.html#function-expression-syntax">6.2.2.1. Syntax</a></li>
<li><a href="functions.html#_semantics-and-type-inference">6.2.2.2. Semantics and Type Inference</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="functions.html#_ecmascript-2015-function-definition">6.3. ECMAScript 2015 Function Definition</a>
<ul class="sectlevel3">
<li><a href="functions.html#_formal-parameters">6.3.1. Formal Parameters</a>
<ul class="sectlevel4">
<li><a href="functions.html#Type_Modifiers_Optional">6.3.1.1. Optional Parameters</a></li>
<li><a href="functions.html#Type_Modifiers_Default">6.3.1.2. Default Parameters</a></li>
<li><a href="functions.html#Type_Modifiers_Variadic">6.3.1.3. Variadic</a></li>
</ul>
</li>
<li><a href="functions.html#_generator-functions">6.3.2. Generator Functions</a>
<ul class="sectlevel4">
<li><a href="functions.html#generator-functions-syntax">6.3.2.1. Syntax</a></li>
<li><a href="functions.html#generator-functions-semantics">6.3.2.2. Semantics</a></li>
<li><a href="functions.html#_generator-arrow-functions">6.3.2.3. Generator Arrow Functions</a></li>
</ul>
</li>
<li><a href="functions.html#_arrow-function-expression">6.3.3. Arrow Function Expression</a>
<ul class="sectlevel4">
<li><a href="functions.html#arrow-function-expression-syntax">6.3.3.1. Syntax</a></li>
<li><a href="functions.html#arrow-function-expression-semantics-and-type-inference">6.3.3.2. Semantics and Type Inference</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="functions.html#_ecmascript-proposals-function-definition">6.4. ECMAScript Proposals Function Definition</a>
<ul class="sectlevel3">
<li><a href="functions.html#_asynchronous-functions">6.4.1. Asynchronous Functions</a>
<ul class="sectlevel4">
<li><a href="functions.html#asynchronous-functions-syntax">6.4.1.1. Syntax</a></li>
<li><a href="functions.html#asynchronous-functions-semantics">6.4.1.2. Semantics</a></li>
<li><a href="functions.html#_asynchronous-arrow-functions">6.4.1.3. Asynchronous Arrow Functions</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="functions.html#_n4js-extended-function-definition">6.5. N4JS Extended Function Definition</a>
<ul class="sectlevel3">
<li><a href="functions.html#_generic-functions">6.5.1. Generic Functions</a></li>
<li><a href="functions.html#_promisifiable-functions">6.5.2. Promisifiable Functions</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="conversions_and_reflection.html#_conversions-and-reflection">7. Conversions and Reflection</a>
<ul class="sectlevel2">
<li><a href="conversions_and_reflection.html#_autoboxing-and-coercing">7.1. Autoboxing and Coercing</a>
<ul class="sectlevel3">
<li><a href="conversions_and_reflection.html#_coercing">7.1.1. Coercing</a></li>
<li><a href="conversions_and_reflection.html#_autoboxing-of-primitives">7.1.2. Autoboxing of Primitives</a></li>
<li><a href="conversions_and_reflection.html#_autoboxing-of-function-expressions-and-declarations">7.1.3. Autoboxing of Function Expressions and Declarations</a></li>
</ul>
</li>
<li><a href="conversions_and_reflection.html#_auto-conversion-of-objects">7.2. Auto-Conversion of Objects</a>
<ul class="sectlevel3">
<li><a href="conversions_and_reflection.html#_auto-conversion-of-class-instances">7.2.1. Auto-Conversion of Class Instances</a>
<ul class="sectlevel4">
<li><a href="conversions_and_reflection.html#_auto-conversion-of-interface-instances">7.2.1.1. Auto-Conversion of Interface Instances</a></li>
</ul>
</li>
<li><a href="conversions_and_reflection.html#_auto-conversion-of-enum-literals">7.2.2. Auto-Conversion of Enum Literals</a></li>
</ul>
</li>
<li><a href="conversions_and_reflection.html#_type-cast-and-type-check">7.3. Type Cast and Type Check</a>
<ul class="sectlevel3">
<li><a href="conversions_and_reflection.html#_type-cast">7.3.1. Type Cast</a></li>
<li><a href="conversions_and_reflection.html#_type-check">7.3.2. Type Check</a></li>
</ul>
</li>
<li><a href="conversions_and_reflection.html#_reflection-meta-information">7.4. Reflection meta-information</a>
<ul class="sectlevel3">
<li><a href="conversions_and_reflection.html#_reflection-for-classes">7.4.1. Reflection for Classes</a></li>
<li><a href="conversions_and_reflection.html#_reflection-for-interfaces">7.4.2. Reflection for Interfaces</a></li>
<li><a href="conversions_and_reflection.html#_reflection-for-enumerations">7.4.3. Reflection for Enumerations</a></li>
</ul>
</li>
<li><a href="conversions_and_reflection.html#_conversion-of-primitive-types">7.5. Conversion of primitive types</a></li>
</ul>
</li>
<li><a href="expressions.html#_expressions">8. Expressions</a>
<ul class="sectlevel2">
<li><a href="expressions.html#_ecmascript-5-expressions">8.1. ECMAScript 5 Expressions</a>
<ul class="sectlevel3">
<li><a href="expressions.html#_the-this-literal">8.1.1. The this Literal</a></li>
<li><a href="expressions.html#_identifier">8.1.2. Identifier</a></li>
<li><a href="expressions.html#_literals">8.1.3. Literals</a>
<ul class="sectlevel4">
<li><a href="expressions.html#_integer-literals">8.1.3.1. Integer Literals</a></li>
</ul>
</li>
<li><a href="expressions.html#_array-literal">8.1.4. Array Literal</a></li>
<li><a href="expressions.html#_object-literal">8.1.5. Object Literal</a>
<ul class="sectlevel4">
<li><a href="expressions.html#_properties-6">8.1.5.1. Properties</a></li>
<li><a href="expressions.html#_scoping-and-linking">8.1.5.2. Scoping and linking</a></li>
</ul>
</li>
<li><a href="expressions.html#_parenthesized-expression-and-grouping-operator">8.1.6. Parenthesized Expression and Grouping Operator</a></li>
<li><a href="expressions.html#_property-accessors">8.1.7. Property Accessors</a>
<ul class="sectlevel4">
<li><a href="expressions.html#properties-1">8.1.7.1. Properties</a></li>
</ul>
</li>
<li><a href="expressions.html#_new-expression">8.1.8. New Expression</a></li>
<li><a href="expressions.html#_function-expression-2">8.1.9. Function Expression</a></li>
<li><a href="expressions.html#_function-calls">8.1.10. Function Calls</a></li>
<li><a href="expressions.html#_postfix-expression">8.1.11. Postfix Expression</a></li>
<li><a href="expressions.html#_unary-expression">8.1.12. Unary Expression</a></li>
<li><a href="expressions.html#_multiplicative-expression">8.1.13. Multiplicative Expression</a></li>
<li><a href="expressions.html#_additive-expression">8.1.14. Additive Expression</a>
<ul class="sectlevel4">
<li><a href="expressions.html#type-inference-10">8.1.14.1. Type Inference</a></li>
</ul>
</li>
<li><a href="expressions.html#_bitwise-shift-expression">8.1.15. Bitwise Shift Expression</a></li>
<li><a href="expressions.html#_relational-expression">8.1.16. Relational Expression</a></li>
<li><a href="expressions.html#_equality-expression">8.1.17. Equality Expression</a></li>
<li><a href="expressions.html#_binary-bitwise-expression">8.1.18. Binary Bitwise Expression</a></li>
<li><a href="expressions.html#_binary-logical-expression">8.1.19. Binary Logical Expression</a></li>
<li><a href="expressions.html#_conditional-expression">8.1.20. Conditional Expression</a></li>
<li><a href="expressions.html#_assignment-expression">8.1.21. Assignment Expression</a></li>
<li><a href="expressions.html#_comma-expression">8.1.22. Comma Expression</a></li>
</ul>
</li>
<li><a href="expressions.html#_ecmascript-6-expressions">8.2. ECMAScript 6 Expressions</a>
<ul class="sectlevel3">
<li><a href="expressions.html#_the-super-keyword">8.2.1. The super Keyword</a></li>
</ul>
</li>
<li><a href="expressions.html#_ecmascript-7-expressions">8.3. ECMAScript 7 Expressions</a>
<ul class="sectlevel3">
<li><a href="expressions.html#_await-expression">8.3.1. Await Expression</a></li>
</ul>
</li>
<li><a href="expressions.html#_n4js-specific-expressions">8.4. N4JS Specific Expressions</a>
<ul class="sectlevel3">
<li><a href="expressions.html#_class-expression">8.4.1. Class Expression</a></li>
<li><a href="expressions.html#_cast-as-expression">8.4.2. Cast (As) Expression</a>
<ul class="sectlevel4">
<li><a href="expressions.html#cast-as-expression-semantics-type-inference">8.4.2.1. Semantics and Type Inference</a></li>
</ul>
</li>
<li><a href="expressions.html#Import_Calls">8.4.3. Import Calls</a></li>
</ul>
</li>
<li><a href="expressions.html#compile-time-expressions">8.5. Compile-Time Expressions</a></li>
</ul>
</li>
<li><a href="statements.html#_statements">9. Statements</a>
<ul class="sectlevel2">
<li><a href="statements.html#_ecmascript-5-statements">9.1. ECMAScript 5 Statements</a>
<ul class="sectlevel3">
<li><a href="statements.html#_function-or-field-accessor-bodies">9.1.1. Function or Field Accessor Bodies</a></li>
<li><a href="statements.html#_variable-statement">9.1.2. Variable Statement</a></li>
<li><a href="statements.html#_if-statement">9.1.3. If Statement</a></li>
<li><a href="statements.html#_iteration-statements">9.1.4. Iteration Statements</a></li>
<li><a href="statements.html#_return-statement">9.1.5. Return Statement</a></li>
<li><a href="statements.html#_with-statement">9.1.6. With Statement</a></li>
<li><a href="statements.html#_switch-statement">9.1.7. Switch Statement</a></li>
<li><a href="statements.html#_throw-try-and-catch-statements">9.1.8. Throw, Try, and Catch Statements</a></li>
<li><a href="statements.html#_debugger-statement">9.1.9. Debugger Statement</a></li>
</ul>
</li>
<li><a href="statements.html#_ecmascript-6-statements">9.2. ECMAScript 6 Statements</a>
<ul class="sectlevel3">
<li><a href="statements.html#_let">9.2.1. Let</a></li>
<li><a href="statements.html#_const">9.2.2. Const</a></li>
<li><a href="statements.html#_for-of-statement">9.2.3. <code>for &#8230;&#8203; of</code> statement</a></li>
<li><a href="statements.html#_import-statement">9.2.4. Import Statement</a>
<ul class="sectlevel4">
<li><a href="statements.html#Dynamic_Imports">9.2.4.1. Dynamic Imports</a></li>
<li><a href="statements.html#_immutabilaty-of-imports">9.2.4.2. Immutabilaty of Imports</a></li>
</ul>
</li>
<li><a href="statements.html#_export-statement">9.2.5. Export Statement</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="annotations.html#_annotations">10. Annotations</a>
<ul class="sectlevel2">
<li><a href="annotations.html#_introduction-2">10.1. Introduction</a>
<ul class="sectlevel3">
<li><a href="annotations.html#_syntax-13">10.1.1. Syntax</a></li>
<li><a href="annotations.html#_properties-7">10.1.2. Properties</a></li>
<li><a href="annotations.html#_element-specific-annotations">10.1.3. Element-Specific Annotations</a></li>
<li><a href="annotations.html#_general-annotations">10.1.4. General Annotations</a>
<ul class="sectlevel4">
<li><a href="annotations.html#_idebug">10.1.4.1. IDEBUG</a></li>
</ul>
</li>
<li><a href="annotations.html#idebug-syntax">10.1.5. Syntax</a>
<ul class="sectlevel4">
<li><a href="annotations.html#_semantics-11">10.1.5.1. Semantics</a></li>
<li><a href="annotations.html#_suppress-warnings">10.1.5.2. Suppress Warnings</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="annotations.html#_declaration-of-annotations">10.2. Declaration of Annotations</a></li>
</ul>
</li>
<li><a href="extended_fetaures.html#_extended-fetaures">11. Extended Fetaures</a>
<ul class="sectlevel2">
<li><a href="extended_fetaures.html#_array-and-object-destructuring">11.1. Array and Object Destructuring</a>
<ul class="sectlevel3">
<li><a href="extended_fetaures.html#_syntax-14">11.1.1. Syntax</a></li>
<li><a href="extended_fetaures.html#_semantics-12">11.1.2. Semantics</a></li>
</ul>
</li>
<li><a href="extended_fetaures.html#_dependency-injection">11.2. Dependency Injection</a>
<ul class="sectlevel3">
<li><a href="extended_fetaures.html#_di-components-and-injectors">11.2.1. DI Components and Injectors</a>
<ul class="sectlevel4">
<li><a href="extended_fetaures.html#_dicomponent-relations">11.2.1.1. DIComponent Relations</a></li>
</ul>
</li>
<li><a href="extended_fetaures.html#_binders-and-bindings">11.2.2. Binders and Bindings</a></li>
<li><a href="extended_fetaures.html#_injection-points">11.2.3. Injection Points</a>
<ul class="sectlevel4">
<li><a href="extended_fetaures.html#_field-injection">11.2.3.1. Field Injection</a></li>
<li><a href="extended_fetaures.html#_constructor-injection">11.2.3.2. Constructor Injection</a></li>
<li><a href="extended_fetaures.html#_method-injection">11.2.3.3. Method Injection</a>
<ul class="sectlevel5">
<li><a href="extended_fetaures.html#_provider">11.2.3.3.1. Provider</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="extended_fetaures.html#_n4js-di-life-cycle-and-scopes">11.2.4. N4JS DI Life Cycle and Scopes</a>
<ul class="sectlevel4">
<li><a href="extended_fetaures.html#_injection-cylces">11.2.4.1. Injection Cylces</a></li>
<li><a href="extended_fetaures.html#_default-scope">11.2.4.2. Default Scope</a></li>
<li><a href="extended_fetaures.html#_singleton-scope">11.2.4.3. Singleton Scope</a></li>
<li><a href="extended_fetaures.html#_per-injection-chain-singleton">11.2.4.4. Per Injection Chain Singleton</a></li>
</ul>
</li>
<li><a href="extended_fetaures.html#_validation-of-callsites-targeting-n4injector-methods">11.2.5. Validation of callsites targeting N4Injector methods</a></li>
<li><a href="extended_fetaures.html#_n4js-di-annotations">11.2.6. N4JS DI Annotations</a>
<ul class="sectlevel4">
<li><a href="extended_fetaures.html#_n4js-di-generateinjector">11.2.6.1. N4JS DI @GenerateInjector</a></li>
<li><a href="extended_fetaures.html#_n4js-di-withparentinjector">11.2.6.2. N4JS DI @WithParentInjector</a></li>
<li><a href="extended_fetaures.html#_n4js-di-usebinder">11.2.6.3. N4JS DI @UseBinder</a></li>
<li><a href="extended_fetaures.html#_n4js-di-binder">11.2.6.4. N4JS DI @Binder</a></li>
<li><a href="extended_fetaures.html#_n4js-di-bind">11.2.6.5. N4JS DI @Bind</a></li>
<li><a href="extended_fetaures.html#_n4js-di-provides">11.2.6.6. N4JS DI @Provides</a></li>
<li><a href="extended_fetaures.html#_n4js-di-inject">11.2.6.7. N4JS DI @Inject</a></li>
<li><a href="extended_fetaures.html#_n4js-di-singleton">11.2.6.8. N4JS DI @Singleton</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="extended_fetaures.html#_test-support">11.3. Test Support</a></li>
<li><a href="extended_fetaures.html#_polyfill-definitions">11.4. Polyfill Definitions</a>
<ul class="sectlevel3">
<li><a href="extended_fetaures.html#_runtime-polyfill-definitions">11.4.1. Runtime Polyfill Definitions</a></li>
<li><a href="extended_fetaures.html#_static-polyfill-definitions">11.4.2. Static Polyfill Definitions</a></li>
<li><a href="extended_fetaures.html#_transpiling-static-polyfilled-classes">11.4.3. Transpiling static polyfilled classes</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="components.html#_components">12. Components</a>
<ul class="sectlevel2">
<li><a href="components.html#_overview-2">12.1. Overview</a></li>
<li><a href="components.html#Component_Types">12.2. Component Types</a>
<ul class="sectlevel3">
<li><a href="components.html#_libraries">12.2.1. Libraries</a></li>
<li><a href="components.html#_runtime-environment-and-runtime-libraries">12.2.2. Runtime Environment and Runtime Libraries</a></li>
<li><a href="components.html#_tests">12.2.3. Tests</a></li>
<li><a href="components.html#_type-definitions">12.2.4. Type Definitions</a></li>
</ul>
</li>
<li><a href="components.html#package-json">12.3. Package.json File</a>
<ul class="sectlevel3">
<li><a href="components.html#_basic-properties">12.3.1. Basic Properties</a></li>
<li><a href="components.html#_n4js-properties">12.3.2. N4JS Properties</a></li>
<li><a href="components.html#_constraints">12.3.3. Constraints</a></li>
</ul>
</li>
<li><a href="components.html#_support-for-npm-scopes">12.4. Support for NPM Scopes</a></li>
<li><a href="components.html#sec:N4JS-Type-Definitions">12.5. N4JS Type Definitions</a>
<ul class="sectlevel3">
<li><a href="components.html#_specify-type-definition">12.5.1. Specify Type Definition</a></li>
<li><a href="components.html#_name-conventions">12.5.2. Name Conventions</a></li>
<li><a href="components.html#_version-conventions">12.5.3. Version Conventions</a>
<ul class="sectlevel4">
<li><a href="components.html#_define-a-new-type-definition-package">12.5.3.1. Define a New Type Definition Package</a></li>
<li><a href="components.html#_using-a-type-definition-package">12.5.3.2. Using a Type Definition Package</a></li>
<li><a href="components.html#_rational">12.5.3.3. Rational</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="components.html#_modules">12.6. Modules</a></li>
<li><a href="components.html#_api-and-implementation-component">12.7. API and Implementation Component</a>
<ul class="sectlevel3">
<li><a href="components.html#_execution-of-api-and-implementation-components">12.7.1. Execution of API and Implementation Components</a></li>
<li><a href="components.html#_api-and-implementation-with-di">12.7.2. API and Implementation With DI</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="plainjs.html#_plainjs">13. PlainJS</a>
<ul class="sectlevel2">
<li><a href="plainjs.html#_type-inference-and-validation-for-plain-js">13.1. Type Inference and Validation for Plain JS</a></li>
<li><a href="plainjs.html#_external-declarations">13.2. External Declarations</a>
<ul class="sectlevel3">
<li><a href="plainjs.html#_declaring-externals">13.2.1. Declaring externals</a></li>
<li><a href="plainjs.html#_instantiating-external-classes">13.2.2. Instantiating external classes</a></li>
<li><a href="plainjs.html#_implementation-of-external-declarations">13.2.3. Implementation of External Declarations</a></li>
<li><a href="plainjs.html#_example">13.2.4. Example</a></li>
</ul>
</li>
<li><a href="plainjs.html#_global-definitions">13.3. Global Definitions</a></li>
<li><a href="plainjs.html#_runtime-definitions">13.4. Runtime Definitions</a></li>
<li><a href="plainjs.html#_applying-polyfills">13.5. Applying Polyfills</a></li>
</ul>
</li>
<li><a href="jsdoc.html#_jsdoc-2">14. JSDoc</a>
<ul class="sectlevel2">
<li><a href="jsdoc.html#_general-n4jsdoc-features">14.1. General N4JSDoc Features</a>
<ul class="sectlevel3">
<li><a href="jsdoc.html#_provided-inline-tags">14.1.1. Provided Inline Tags</a>
<ul class="sectlevel4">
<li><a href="jsdoc.html#jsdoc_tag__code">14.1.1.1. @code</a></li>
<li><a href="jsdoc.html#jsdoc_tag__link">14.1.1.2. @link</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="jsdoc.html#_n4jsdoc-for-user-projects">14.2. N4JSdoc for User Projects</a>
<ul class="sectlevel3">
<li><a href="jsdoc.html#_standard-tags">14.2.1. Standard Tags</a>
<ul class="sectlevel4">
<li><a href="jsdoc.html#_-author">14.2.1.1. @author</a></li>
<li><a href="jsdoc.html#jsdoc_tag_param">14.2.1.2. @param</a></li>
<li><a href="jsdoc.html#jsdoc_tag_return">14.2.1.3. @return</a></li>
</ul>
</li>
<li><a href="jsdoc.html#_test-related-tags">14.2.2. Test Related Tags</a>
<ul class="sectlevel4">
<li><a href="jsdoc.html#jsdoc_tag__testee">14.2.2.1. @testee</a></li>
<li><a href="jsdoc.html#jsdoc_tag__testeeFromType">14.2.2.2. @testeeFromType</a></li>
<li><a href="jsdoc.html#_testeeType_and__testeeMember">14.2.2.3. @testeeType and @testeeMember</a></li>
<li><a href="jsdoc.html#jsdoc_tag_reqid_in_Tests">14.2.2.4. @reqid in Tests</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="jsdoc.html#_n4jsdoc-for-api-and-implementation-projects">14.3. N4JSDoc for API and Implementation Projects</a>
<ul class="sectlevel3">
<li><a href="jsdoc.html#jsdoc_tag__apiNote">14.3.1. @apiNote</a></li>
<li><a href="jsdoc.html#API_Project_Tags">14.3.2. API Project Tags</a>
<ul class="sectlevel4">
<li><a href="jsdoc.html#jsdoc_tag_apiState">14.3.2.1. @apiState</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="jsx.html#_jsx">15. JSX</a>
<ul class="sectlevel2">
<li><a href="jsx.html#_jsx-support">15.1. JSX Support</a></li>
<li><a href="jsx.html#_jsx-backend">15.2. JSX Backend</a></li>
</ul>
</li>
<li><a href="grammars.html#_grammars">16. Grammars</a>
<ul class="sectlevel2">
<li><a href="grammars.html#_type-expressions-grammar">16.1. Type Expressions Grammar</a></li>
<li><a href="grammars.html#_n4js-language-grammar">16.2. N4JS Language Grammar</a></li>
</ul>
</li>
<li><a href="#_jsobjects">17. JSObjects</a>
<ul class="sectlevel2">
<li><a href="#_object">17.1. Object</a></li>
<li><a href="#_string">17.2. String</a></li>
<li><a href="#_boolean">17.3. Boolean</a></li>
<li><a href="#_number">17.4. Number</a>
<ul class="sectlevel3">
<li><a href="#_static-attributes">17.4.1. Static Attributes</a></li>
</ul>
</li>
<li><a href="#function">17.5. Function</a></li>
<li><a href="#_error">17.6. Error</a></li>
<li><a href="#_array">17.7. Array</a></li>
<li><a href="#_date">17.8. Date</a></li>
<li><a href="#_math">17.9. Math</a>
<ul class="sectlevel3">
<li><a href="#static-attributes-1">17.9.1. Static Attributes</a></li>
</ul>
</li>
<li><a href="#_regexp">17.10. RegExp</a></li>
<li><a href="#_json">17.11. JSON</a></li>
</ul>
</li>
<li><a href="n4js_objects.html#_n4js-objects">18. N4JS Objects</a>
<ul class="sectlevel2">
<li><a href="n4js_objects.html#_reflection-model">18.1. Reflection Model</a></li>
<li><a href="n4js_objects.html#_error-types">18.2. Error Types</a>
<ul class="sectlevel3">
<li><a href="n4js_objects.html#_n4apinotimplemented">18.2.1. N4ApiNotImplemented</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="appendix_a_acronyms.html#_acronyms">Appendix A: Acronyms</a></li>
<li><a href="appendix_b_license.html#sec:License">Appendix B: License</a></li>
<li><a href="appendix_c_bibliography.html#_bibliography">Appendix C: Bibliography</a></li>
</ul>
</div>
</div>
<div id="content"><div class="sect1">
<h2 id="_jsobjects"><a class="anchor" href="#_jsobjects"></a><a class="link" href="#_jsobjects">17. JSObjects</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>The built-in ECMAScript Objects
[<a href="appendix_c_bibliography.html#ECMA11a">ECMA11a(p.S15, p.p.102)</a>] are supported and their properties are annotated with types as described in this chapter. The semantics of these properties do not change. The short description is copied from [<a href="appendix_c_bibliography.html#ECMA11a">ECMA11a</a>] repeated here for convenience.</p>
</div>
<div class="sect2 language-n4js">
<h3 id="_object"><a class="anchor" href="#_object"></a><a class="link" href="#_object">17.1. Object</a></h3>
<div class="paragraph">
<p><code>Object</code> is the super type of all declared types and <code>N4Object</code>. It is almost similar to the JavaScript type <code>Object</code> except that no properties may be dynamically added to it. In order to declare a variable to which properties can be dynamically added, the <code>Object+</code> type has to be declared (cf.
<a href="#_dynamic">[_dynamic]</a>).</p>
</div>
<h4 id="_attributes" class="discrete">Attributes</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>constructor:Object</code></dt>
<dd>
<p>Returns a reference to the Object function that created the instance’s
prototype.</p>
</dd>
</dl>
</div>
<h4 id="_methods-2" class="discrete">Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>toString():Object</code></dt>
<dd>
<p>Returns a string representing the specified object.</p>
</dd>
<dt class="hdlist1"><code>toLocaleString():Object</code></dt>
<dd>
<p>Returns a string representing the object. This method is meant to be
overridden by derived objects for locale-specific purposes.</p>
</dd>
<dt class="hdlist1"><code>valueOf():Object</code></dt>
<dd>
<p>Returns the primitive value of the specified object.</p>
</dd>
<dt class="hdlist1"><code>hasOwnProperty(prop:String):Boolean</code></dt>
<dd>
<p>Returns a boolean indicating whether an object contains the specified
property as a direct property of that object and not inherited through
the prototype chain.</p>
</dd>
<dt class="hdlist1"><code>isPrototypeOf(object:Object):Boolean</code></dt>
<dd>
<p>Returns a boolean indication whether the specified object is in the
prototype chain of the object this method is called upon.</p>
</dd>
<dt class="hdlist1"><code>propertyIsEnumerable(prop:String):Boolean</code></dt>
<dd>
<p>Returns a boolean indicating if the internal ECMAScript DontEnum
attribute is set.</p>
</dd>
</dl>
</div>
<h4 id="_static-methods" class="discrete">Static Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>getPrototypeOf(object:Object):Object</code></dt>
<dd>
<p>Returns the prototype of the specified object.</p>
</dd>
<dt class="hdlist1"><code>create(object:Object,properties:Object=):Object</code></dt>
<dd>
<p>Creates a new object with the specified prototype object and properties.</p>
</dd>
<dt class="hdlist1"><code>defineProperty(object:Object,prop:Object,descriptor:Object):Object</code></dt>
<dd>
<p>Defines a new property directly on an object or modifies an existing
property on an object and returns the object.</p>
</dd>
<dt class="hdlist1"><code>defineProperties(object:Object,properties:Object):Object</code></dt>
<dd>
<p>Defines new or modifies existing properties directly on an object,
returning the object.</p>
</dd>
<dt class="hdlist1"><code>seal(object:Object,properties:Object)</code></dt>
<dd>
<p>Seals an object, preventing new properties from being added to it and
marking all existing properties as non-configurable. Values of present
properties can still be changed as long as they are writable.</p>
</dd>
<dt class="hdlist1"><code>freeze(object:Object):Object</code></dt>
<dd>
<p>Freezes an object: that is, prevents new properties from being added to it, prevents existing properties from being removed, prevents existing properties or their enumerability, configurability, or writability from being changed.
In essence, the object is made effectively immutable.
The method returns the object being frozen.</p>
</dd>
<dt class="hdlist1"><code>preventExtensions(object:Object):Object</code></dt>
<dd>
<p>Prevents new properties from ever being added to an object (i.e.
prevents future extensions to the object).</p>
</dd>
<dt class="hdlist1"><code>isSealed(object:Object):Boolean static</code></dt>
<dd>
<p>Determine if an object is sealed.</p>
</dd>
<dt class="hdlist1"><code>isFrozen(object:Object):Boolean</code></dt>
<dd>
<p>Determine if an object is frozen.</p>
</dd>
<dt class="hdlist1"><code>isExtensible(object:Object):Boolean</code></dt>
<dd>
<p>Determines if an object is extensible (whether it can have new
properties added to it).</p>
</dd>
<dt class="hdlist1"><code>keys(object:Object):Array&lt;String&gt;</code></dt>
<dd>
<p>Returns an array of all own enumerable properties found upon a given
object in the same order as that provided by a for-in loop (the
difference being that a for-in loop enumerates properties in the
prototype chain as well).</p>
</dd>
</dl>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="_string"><a class="anchor" href="#_string"></a><a class="link" href="#_string">17.2. String</a></h3>
<div class="paragraph">
<p>String is a global object that may be used to construct String
instances and is a sub class of Object.</p>
</div>
<h4 id="string-attributes" class="discrete">Attributes</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>number: length</code> </dt>
<dd>
<p>The length of a string.</p>
</dd>
</dl>
</div>
<h4 id="methods-1" class="discrete">Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>String(thing:Object=)</code></dt>
<dd>
<p>-</p>
</dd>
<dt class="hdlist1"><code>anchor(anchorname:String):String</code></dt>
<dd>
<p>Creates an HTML anchor.</p>
</dd>
<dt class="hdlist1"><code>big():String</code></dt>
<dd>
<p>Returns a string in a big font.</p>
</dd>
<dt class="hdlist1"><code>blink():String</code></dt>
<dd>
<p>Returns a string in a blinking string.</p>
</dd>
<dt class="hdlist1"><code>bold():String</code></dt>
<dd>
<p>Returns a string in a bold font.</p>
</dd>
<dt class="hdlist1"><code>charAt(index:Number):String</code></dt>
<dd>
<p>Returns the character at a specified position.</p>
</dd>
<dt class="hdlist1"><code>charCodeAt(index:Number):Number</code></dt>
<dd>
<p>Returns the Unicode of the character at a specified position.</p>
</dd>
<dt class="hdlist1"><code>concat(strings:String&#8230;&#8203;):String</code></dt>
<dd>
<p>Joins two or more strings.</p>
</dd>
<dt class="hdlist1"><code>equals(object:Object):Boolean</code> </dt>
<dd>
<p>-</p>
</dd>
<dt class="hdlist1"><code>equalsIgnoreCase(object:Object):Boolean</code> </dt>
<dd>
<p>-</p>
</dd>
<dt class="hdlist1"><code>fromCharCode(num:Any&#8230;&#8203;):String</code></dt>
<dd>
<p>Returns a string created by using the specified sequence of Unicode values.</p>
</dd>
<dt class="hdlist1"><code>fixed():String</code></dt>
<dd>
<p>Returns a string as teletype text.</p>
</dd>
<dt class="hdlist1"><code>fontcolor(color):String</code></dt>
<dd>
<p>Returns a string in a specified color.</p>
</dd>
<dt class="hdlist1"><code>fontsize(size):String</code></dt>
<dd>
<p>Returns a string in a specified size.</p>
</dd>
<dt class="hdlist1"><code>indexOf(searchValue, fromIndex:Number=):Number</code></dt>
<dd>
<p>Returns the position of the first occurrence of a specified string value in a string.</p>
</dd>
<dt class="hdlist1"><code>italics():String</code></dt>
<dd>
<p>Returns a string in italic.</p>
</dd>
<dt class="hdlist1"><code>lastIndexOf(searchValue, fromIndex:Number=):Number</code></dt>
<dd>
<p>Returns the position of the last occurrence of a specified string value, searching backwards from the specified position in a string.</p>
</dd>
<dt class="hdlist1"><code>link(url):String</code></dt>
<dd>
<p>Returns a string as a hyperlink.</p>
</dd>
<dt class="hdlist1"><code>localeCompare(otherString):Number</code></dt>
<dd>
<p>This method returns a number indicating whether a reference string comes before or after or is the same as the given string in sort order.</p>
</dd>
<dt class="hdlist1"><code>match(search value):String</code></dt>
<dd>
<p>Searches for a specified value in a string.</p>
</dd>
<dt class="hdlist1"><code>replace(findString,newString):String</code></dt>
<dd>
<p>Replaces some characters with some other characters in a string.</p>
</dd>
<dt class="hdlist1"><code>search(search string):Number</code></dt>
<dd>
<p>Searches a string for a specified value.</p>
</dd>
<dt class="hdlist1"><code>slice(beginSlice:Number, endSclice:Number=):String</code></dt>
<dd>
<p>Extracts a part of a string and returns the extracted part in a new string.</p>
</dd>
<dt class="hdlist1"><code>small():String</code></dt>
<dd>
<p>Returns a string in a small font.</p>
</dd>
<dt class="hdlist1"><code>split(separator, howmany:Number=):Array&lt;String&gt;</code></dt>
<dd>
<p>Splits a string into an array of strings.</p>
</dd>
<dt class="hdlist1"><code>strike():String</code></dt>
<dd>
<p>Returns a string with a strikethrough.</p>
</dd>
<dt class="hdlist1"><code>sub():String</code></dt>
<dd>
<p>Returns a string as subscript.</p>
</dd>
<dt class="hdlist1"><code>substr(start:Number,length:Number=):String</code></dt>
<dd>
<p>Extracts a specified number of characters in a string, from a start index.</p>
</dd>
<dt class="hdlist1"><code>substring(beginIndex:number,endIndex:Number=):String</code></dt>
<dd>
<p>Extracts the characters in a string between two specified indices.</p>
</dd>
<dt class="hdlist1"><code>sup():String</code></dt>
<dd>
<p>Returns a string as superscript.</p>
</dd>
<dt class="hdlist1"><code>toLocaleUpperCase():String</code></dt>
<dd>
<p>Returns a string in lowercase letters.</p>
</dd>
<dt class="hdlist1"><code>toString():String</code></dt>
<dd>
<p>Returns a String value for this object.</p>
</dd>
<dt class="hdlist1"><code>toUpperCase():String</code></dt>
<dd>
<p>Returns a string in uppercase letters.</p>
</dd>
<dt class="hdlist1"><code>valueOf():String</code></dt>
<dd>
<p>Returns the primitive value of a String object.</p>
</dd>
</dl>
</div>
<h4 id="static-methods-1" class="discrete">Static Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>String(value:Object=)</code></dt>
<dd>
<p>Static constructor.</p>
</dd>
</dl>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="_boolean"><a class="anchor" href="#_boolean"></a><a class="link" href="#_boolean">17.3. Boolean</a></h3>
<div class="paragraph">
<p><code>Boolean</code> does not have a super class.</p>
</div>
<h4 id="static-methods-2" class="discrete">Static Methods</h4>
<div class="paragraph">
<p><code>Boolean(value:Object=):Boolean</code></p>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="_number"><a class="anchor" href="#_number"></a><a class="link" href="#_number">17.4. Number</a></h3>
<div class="paragraph">
<p><code>Number</code> does not have a super class.</p>
</div>
<div class="sect3">
<h4 id="_static-attributes"><a class="anchor" href="#_static-attributes"></a><a class="link" href="#_static-attributes">17.4.1. Static Attributes</a></h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>MAX_VALUE:Number</code></dt>
<dd>
<p>The largest representable number.</p>
</dd>
<dt class="hdlist1"><code>MIN_VALUE:Number</code></dt>
<dd>
<p>The smallest representable number.</p>
</dd>
<dt class="hdlist1"><code>NaN:Number</code></dt>
<dd>
<p>Special 'not a number' value.</p>
</dd>
<dt class="hdlist1"><code>NEGATIVE_INFINITY:Number</code></dt>
<dd>
<p>Special value representing negative infinity, returned on overflow.</p>
</dd>
<dt class="hdlist1"><code>POSITIVE_INFINITY:Number</code></dt>
<dd>
<p>Special value representing infinity, returned on overflow.</p>
</dd>
</dl>
</div>
<h4 id="methods-2" class="discrete">Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>toExponential(numberOfDecimals:Number=):String</code></dt>
<dd>
<p>Converts the value of the object into an exponential notation.</p>
</dd>
<dt class="hdlist1"><code>toFixed(numberOfDecimals:Number=):String</code></dt>
<dd>
<p>Formats a number to the specified number of decimals.</p>
</dd>
<dt class="hdlist1"><code>toPrecision(numberOfDecimals:Number=):String</code></dt>
<dd>
<p>Converts a number into an exponential notation if it has more digits than specified.</p>
</dd>
<dt class="hdlist1"><code>valueOf():Number</code></dt>
<dd>
<p>Returns the primitive value of a Number object.</p>
</dd>
<dt class="hdlist1"><code>toString(radix:Number=):String</code></dt>
<dd>
<p>Returns a String value for this object. The toString method parses its first argument and attempts to return a string representation in the specified radix (base).</p>
</dd>
<dt class="hdlist1"><code>toLocaleString(locales: String|[String]=undefined, options: <sub>r</sub>NumberFormatOptions=undefined): String</code></dt>
<dd>
<p>Returns a locale-specific String value for this object. The toLocalString accepts two optional arguments. The semantics of these arguments
is defined in <a href="https://www.ecma-international.org/ecma-402/4.0/index.html#sup-number.prototype.tolocalestring">ECMA-402 (Internationalization API Specification)</a>.
In N4JS, the base definition does not define that method, instead Number inherits <code>toLocaleString</code> from Object. The specialized
definition is found in the runtime library <code>n4js-runtime-ecma402</code>.</p>
</dd>
</dl>
</div>
<h4 id="static-methods-3" class="discrete">Static Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>Number(value:Object=):Number</code></dt>
<dd>
<p>Static constructor.</p>
</dd>
</dl>
</div>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="function"><a class="anchor" href="#function"></a><a class="link" href="#function">17.5. Function</a></h3>
<div class="paragraph">
<p><code>Function</code> does not have a super class.</p>
</div>
<h4 id="attributes-2" class="discrete">Attributes</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>prototype:Object</code></dt>
<dd>
<p>Allows the addition of properties to the instance of the object created by the constructor function.</p>
</dd>
<dt class="hdlist1"><code>length:Number</code></dt>
<dd>
<p>Specifies the number of arguments expected by the functio</p>
</dd>
</dl>
</div>
<h4 id="methods-3" class="discrete">Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>apply(thisArg,argsArray:Array=):Object</code></dt>
<dd>
<p>Applies the method of another object in the context of a different object (the calling object); arguments can be passed as an Array object.</p>
</dd>
<dt class="hdlist1"><code>call(thisArg,arg&#8230;&#8203;):Object</code></dt>
<dd>
<p>Calls (executes) a method of another object in the context of a different object (the calling object); arguments can be passed as they are.</p>
</dd>
<dt class="hdlist1"><code>bind(thisArg:Object,arg&#8230;&#8203;):Function</code></dt>
<dd>
<p>Creates a new function that, when called, itself calls this function in the context of the provided this value with a given sequence of arguments preceding any provided when the new function was called.</p>
</dd>
</dl>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="_error"><a class="anchor" href="#_error"></a><a class="link" href="#_error">17.6. Error</a></h3>
<div class="paragraph">
<p><code>Error</code> does not have a super class.</p>
</div>
<h4 id="attributes-3" class="discrete">Attributes</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>name:String</code></dt>
<dd>
<p>Error name.</p>
</dd>
<dt class="hdlist1"><code>message:String</code></dt>
<dd>
<p>Error message.</p>
</dd>
</dl>
</div>
<h4 id="static-methods-4" class="discrete">Static Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>Error(message:Object=):Error</code></dt>
<dd>
<p>Static Constructor.</p>
</dd>
</dl>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="_array"><a class="anchor" href="#_array"></a><a class="link" href="#_array">17.7. Array</a></h3>
<div class="paragraph">
<p><code>Array</code> is a generic type with the type parameter <code>E</code> and does not have a super class.</p>
</div>
<h4 id="methods-4" class="discrete">Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>concat(array&#8230;&#8203;):Array&lt;E&gt;)</code></dt>
<dd>
<p>Joins two or more arrays and returns the result.</p>
</dd>
<dt class="hdlist1"><code>every(callback:Function):Boolean</code></dt>
<dd>
<p>Tests whether all elements in the array pass the test implemented by the provided function. The callback will be called with 3 arguments (elementValue,elementIndex,traversedArray).</p>
</dd>
<dt class="hdlist1"><code>filter(callback:Function):Array&lt;E&gt;</code></dt>
<dd>
<p>Creates a new array with all elements that pass the test implemented by the provided function. The callback will be called with 3 arguments (elementValue,elementIndex,traversedArray).</p>
</dd>
<dt class="hdlist1"><code>forEach(callback:Function,thisArg=)</code></dt>
<dd>
<p>Calls a function for each element in the array. The callback will be called with 3 arguments (elementValue,elementIndex,traversedArray). Optionally with a thisObject argument to use as this when executing callback.</p>
</dd>
<dt class="hdlist1"><code>indexOf(searchElement,fromIndex=):Number</code></dt>
<dd>
<p>Returns the first index at which a given element can be found in the array, or -1 if it is not present.</p>
</dd>
<dt class="hdlist1"><code>join(separator=):String</code></dt>
<dd>
<p>Puts all the elements of an array into a string. The elements are separated by a specified delimiter.</p>
</dd>
<dt class="hdlist1"><code>lastIndexOf(searchElement,fromIndex=):Number</code></dt>
<dd>
<p>Returns the last (greatest) index of an element within the array equal to the specified value. Will return -1 if none are found.</p>
</dd>
<dt class="hdlist1"><code>length():Number</code></dt>
<dd>
<p>The length returns an integer representing the length of an array.</p>
</dd>
<dt class="hdlist1"><code>map(callback:Function,thisArg=):Array</code></dt>
<dd>
<p>Creates a new array with the results of calling a provided function on every element in this array. The callback will be called with 3 arguments (elementValue,elementIndex,traversedArray). Optionally, with a thisObject argument to use as this when executing callback.</p>
</dd>
<dt class="hdlist1"><code>pop():E</code></dt>
<dd>
<p>Removes and returns the last element of an array.</p>
</dd>
<dt class="hdlist1"><code>push(element&#8230;&#8203;):E</code></dt>
<dd>
<p>Adds one or more elements to the end of an array and returns the new length.</p>
</dd>
<dt class="hdlist1"><code>reverse():Array&lt;E&gt;</code></dt>
<dd>
<p>Reverses the order of the elements in an array.</p>
</dd>
<dt class="hdlist1"><code>shift()</code></dt>
<dd>
<p>Removes and returns the first element of an array.</p>
</dd>
<dt class="hdlist1"><code>slice(start:Number,end:Number=):Array&lt;E&gt;</code></dt>
<dd>
<p>Returns selected elements from an existing array.</p>
</dd>
<dt class="hdlist1"><code>some(callback:Function,thisArg=):Boolean</code></dt>
<dd>
<p>Tests whether some element in the array passes the test implemented by the provided function. The callback will be called with 3 arguments (elementValue,elementIndex,traversedArray). Optionally, with a thisObject argument to use as this when executing callback.</p>
</dd>
<dt class="hdlist1"><code>sort(sortByFunction:Function=):Array&lt;E&gt;</code></dt>
<dd>
<p>Sorts the elements of an array. The function will be called with 2 arguments (a,b).</p>
</dd>
<dt class="hdlist1"><code>splice(index:Number,how many:Number,element&#8230;&#8203;):Array&lt;E&gt;</code></dt>
<dd>
<p>Removes and adds new elements to an array. Returns the removed elements as an Array.</p>
</dd>
<dt class="hdlist1"><code>toLocaleString():String</code></dt>
<dt class="hdlist1"><code>toString():String</code></dt>
<dd>
<p>Returns a String value for Array.</p>
</dd>
<dt class="hdlist1"><code>unshift(element&#8230;&#8203;):E</code></dt>
<dd>
<p>Adds one or more elements to the beginning of an array and returns the new length.</p>
</dd>
</dl>
</div>
<h4 id="static-methods-5" class="discrete">Static Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>Array(item:Object&#8230;&#8203;)</code></dt>
<dd>
<p>Static constructor.</p>
</dd>
</dl>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="_date"><a class="anchor" href="#_date"></a><a class="link" href="#_date">17.8. Date</a></h3>
<div class="paragraph">
<p><code>Date</code> does not have a super class.</p>
</div>
<h4 id="static-methods-6" class="discrete">Static Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>Date():Date</code></dt>
<dd>
<p>Static constructor.</p>
</dd>
<dt class="hdlist1"><code>Date(milliseconds:Number):Date</code></dt>
<dd>
<p>Constructor.</p>
</dd>
<dt class="hdlist1"><code>Date(date:Date):Date</code></dt>
<dd>
<p>Constructor.</p>
</dd>
<dt class="hdlist1"><code>Date(dateString:String):Date</code></dt>
<dd>
<p>Constructor.</p>
</dd>
<dt class="hdlist1"><code>Date(year:Number,month:Number,day=Number=,hour:Number=,minute:Number=,second:Number=,millisecond:Number=):Date</code></dt>
<dd>
<p>Constructor.</p>
</dd>
<dt class="hdlist1"><code>parse(dateString:String):Date</code></dt>
<dd>
<p>Parses a string representation of a date, and returns the number of milliseconds since midnight Jan 1, 1970.</p>
</dd>
<dt class="hdlist1"><code>now():Number</code></dt>
<dd>
<p>Returns the numeric value corresponding to the current time.</p>
</dd>
<dt class="hdlist1"><code>UTC(year:Number,month:Number,date:Number=,hrs:Number=,min:Number=,sec:Number=,ms:Number=):Number</code></dt>
<dd>
<p>UTC takes comma-delimited date parameters and returns the number of milliseconds between January 1, 1970, 00:00:00, Universal Time and the time you specified.</p>
</dd>
</dl>
</div>
<h4 id="methods-5" class="discrete">Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>getDate():Number</code></dt>
<dd>
<p>Returns the day of the month from a Date object (from 1-31).</p>
</dd>
<dt class="hdlist1"><code>getDay():Number</code></dt>
<dd>
<p>Returns the day of the week from a Date object (from 0-6).</p>
</dd>
<dt class="hdlist1"><code>getFullYear():Number</code></dt>
<dd>
<p>Returns the year, as a four-digit number.</p>
</dd>
<dt class="hdlist1"><code>getHours():Number</code></dt>
<dd>
<p>Returns the hour of a day (from 0-23).</p>
</dd>
<dt class="hdlist1"><code>getMilliseconds():Number</code></dt>
<dd>
<p>Returns the milliseconds of a Date object (from 0-999).</p>
</dd>
<dt class="hdlist1"><code>getMinutes():Number</code></dt>
<dd>
<p>Returns the minutes of a date (from 0-59).</p>
</dd>
<dt class="hdlist1"><code>getMonth():Number</code></dt>
<dd>
<p>Returns the month from a date (from 0-11).</p>
</dd>
<dt class="hdlist1"><code>getSeconds():Number</code></dt>
<dd>
<p>Returns the seconds of a date (from 0-59).</p>
</dd>
<dt class="hdlist1"><code>getTime():Number</code></dt>
<dd>
<p>Returns the number of milliseconds since midnight Jan 1, 1970.</p>
</dd>
<dt class="hdlist1"><code>valueOf():Number</code></dt>
<dd>
<p>Returns the primitive value of a Date object as a number data type, the number of milliseconds since midnight 01 January, 1970 UTC. This method is functionally equivalent to the getTime method.</p>
</dd>
<dt class="hdlist1"><code>getTimezoneOffset():Number</code></dt>
<dd>
<p>Returns the difference in minutes between local time and Greenwich Mean Time (GMT).</p>
</dd>
<dt class="hdlist1"><code>getUTCDate():Number</code></dt>
<dd>
<p>Returns the day of the month from a date according to Universal Time (from 1-31).</p>
</dd>
<dt class="hdlist1"><code>getUTCDay():Number</code></dt>
<dd>
<p>Returns the day of the week from a date according to Universal Time (from 0-6).</p>
</dd>
<dt class="hdlist1"><code>getUTCFullYear():Number</code></dt>
<dd>
<p>Returns the four-digit year from a date according to Universal Time.</p>
</dd>
<dt class="hdlist1"><code>getUTCHours():Number</code></dt>
<dd>
<p>Returns the hour of a date according to Universal Time (from 0-23).</p>
</dd>
<dt class="hdlist1"><code>getUTCMilliseconds():Number</code></dt>
<dd>
<p>Returns the milliseconds of a date according to Universal Time (from 0-999).</p>
</dd>
<dt class="hdlist1"><code>getUTCMinutes():Number</code></dt>
<dd>
<p>Returns the minutes of a date according to Universal Time (from 0-59).</p>
</dd>
<dt class="hdlist1"><code>getUTCMonth():Number</code></dt>
<dd>
<p>Returns the month from a Date object according to Universal Time (from 0-11).</p>
</dd>
<dt class="hdlist1"><code>getUTCSeconds():Number</code></dt>
<dd>
<p>Returns the seconds of a date according to Universal Time (from 0-59).</p>
</dd>
<dt class="hdlist1"><code>getYear():Number deprecated</code></dt>
<dd>
<p>Returns the year as a two-digit or a three/four-digit number, depending on the browser. Use getFullYear() instead!</p>
</dd>
<dt class="hdlist1"><code>setDate(day):Number</code></dt>
<dd>
<p>Sets the day of the month from a Date object (from 1-31).</p>
</dd>
<dt class="hdlist1"><code>setFullYear(full year, month=, day=):Number</code></dt>
<dd>
<p>Sets the year as a four-digit number.</p>
</dd>
<dt class="hdlist1"><code>setHours(hours,minutes=,seconds=,milis=):Number</code></dt>
<dd>
<p>Sets the hour of a day (from 0-23).</p>
</dd>
<dt class="hdlist1"><code>setMilliseconds(mills):Number</code></dt>
<dd>
<p>Sets the milliseconds of a Date object (from 0-999).</p>
</dd>
<dt class="hdlist1"><code>setMinutes(minutes,=seconds,=millis):Number</code></dt>
<dd>
<p>Sets the minutes of a date (from 0-59).</p>
</dd>
<dt class="hdlist1"><code>setMonth" directType="Number(month,day=):Number</code></dt>
<dd>
<p>Sets the month from a date (from 0-11).</p>
</dd>
<dt class="hdlist1"><code>setSeconds(seconds,millis=):number</code></dt>
<dd>
<p>Sets the seconds of a date (from 0-59).</p>
</dd>
<dt class="hdlist1"><code>setTime(mills):Number</code></dt>
<dd>
<p>Sets the number of milliseconds since midnight Jan 1, 1970.</p>
</dd>
<dt class="hdlist1"><code>setUTCDate(day):Number</code></dt>
<dd>
<p>Sets the day of the month from a date according to Universal Time (from 0-6).</p>
</dd>
<dt class="hdlist1"><code>setUTCFullYear(fullyear,month=,day=):Number</code></dt>
<dd>
<p>Sets the four-digit year from a date according to Universal Time.</p>
</dd>
<dt class="hdlist1"><code>setUTCHours(hours,minutes=,seconds=,millis=):Number</code></dt>
<dd>
<p>Sets the hour of a date according to Universal Time (from 0-23).</p>
</dd>
<dt class="hdlist1"><code>setUTCMilliseconds(mills):Number</code></dt>
<dd>
<p>Sets the milliseconds of a date according to Universal Time (from 0-999).</p>
</dd>
<dt class="hdlist1"><code>setUTCMinutes(minutes,seconds=,millis=):Number</code></dt>
<dd>
<p>Sets the minutes of a date according to Universal Time time (from 0-59).</p>
</dd>
<dt class="hdlist1"><code>setUTCMonth(month,day=):Number</code></dt>
<dd>
<p>Sets the month from a Date object according to Universal Time (from 0-11).</p>
</dd>
<dt class="hdlist1"><code>setUTCSeconds(seconds,millis=):Number</code></dt>
<dd>
<p>Sets the seconds of a date according to Universal Time (from 0-59).</p>
</dd>
<dt class="hdlist1"><code>setYear(year):Number deprecated</code></dt>
<dd>
<p>Sets the year, as a two-digit or a three/four-digit number, depending on the browser. Use setFullYear() instead!!</p>
</dd>
<dt class="hdlist1"><code>toDateString():String</code></dt>
<dd>
<p>Returns the date portion of a Date object in readable form.</p>
</dd>
<dt class="hdlist1"><code>toLocaleDateString(locales: String|[String]=undefined, options: <sub>r</sub>DateTimeFormatOptions=undefined): String</code></dt>
<dd>
<p>Converts a Date object, using locales and options as defined in DateTimeFormat of ECMA-402 (Internationalization API), to a string and returns the date and time portion.
The toLocalString accepts two optional arguments. The semantics of these arguments is defined in
<a href="https://www.ecma-international.org/ecma-402/4.0/index.html#sup-date.prototype.tolocaledatestring">ECMA-402 (Internationalization API Specification)</a>.
The specialized definition is found in the runtime library <code>n4js-runtime-ecma402</code>.</p>
</dd>
<dt class="hdlist1"><code>toLocaleString(locales: String|[String]=undefined, options: <sub>r</sub>DateTimeFormatOptions=undefined): String</code></dt>
<dd>
<p>Converts a Date object, using locales and options as defined in DateTimeFormat of ECMA-402 (Internationalization API), to a string.
The toLocalString accepts two optional arguments. The semantics of these arguments is defined in
<a href="https://www.ecma-international.org/ecma-402/4.0/index.html#sup-date.prototype.tolocalestring">ECMA-402 (Internationalization API Specification)</a>.
In N4JS, the base definition does not define that method, instead Date inherits <code>toLocaleString</code> from Object. The specialized
definition is found in the runtime library <code>n4js-runtime-ecma402</code>.</p>
</dd>
<dt class="hdlist1"><code>toLocaleTimeString(locales: String|[String]=undefined, options: <sub>r</sub>DateTimeFormatOptions=undefined): String</code></dt>
<dd>
<p>Converts a Date object, using locales and options as defined in DateTimeFormat of ECMA-402 (Internationalization API), to a string and returns the time portion.
The semantics of these arguments is defined in
<a href="https://www.ecma-international.org/ecma-402/4.0/index.html#sup-date.prototype.tolocaletimestring">ECMA-402 (Internationalization API Specification)</a>.
The specialized definition is found in the runtime library <code>n4js-runtime-ecma402</code>.</p>
</dd>
<dt class="hdlist1"><code>toString():String</code></dt>
<dd>
<p>Returns a String value for this object.</p>
</dd>
<dt class="hdlist1"><code>toTimeString():String</code></dt>
<dd>
<p>Returns the time portion of a Date object in readable form.</p>
</dd>
<dt class="hdlist1"><code>toUTCString():String</code></dt>
<dd>
<p>Converts a Date object, according to Universal Time, to a string.</p>
</dd>
</dl>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="_math"><a class="anchor" href="#_math"></a><a class="link" href="#_math">17.9. Math</a></h3>
<div class="paragraph">
<p><code>Math</code> is not instantiable and only provides static properties and methods.</p>
</div>
<div class="sect3">
<h4 id="static-attributes-1"><a class="anchor" href="#static-attributes-1"></a><a class="link" href="#static-attributes-1">17.9.1. Static Attributes</a></h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>E:Number</code></dt>
<dd>
<p>Euler&#8217;s constant and the base of natural logarithms, approximately 2.718.</p>
</dd>
<dt class="hdlist1"><code>LN2:Number</code></dt>
<dd>
<p>Natural logarithm of 2, approximately 0.693.</p>
</dd>
<dt class="hdlist1"><code>LN10:Number</code></dt>
<dd>
<p>Natural logarithm of 10, approximately 2.302.</p>
</dd>
<dt class="hdlist1"><code>LOG2E:Number</code></dt>
<dd>
<p>Base 2 logarithm of E, approximately 1.442.</p>
</dd>
<dt class="hdlist1"><code>LOG10E:Number</code></dt>
<dd>
<p>Base 10 logarithm of E, approximately 0.434.</p>
</dd>
<dt class="hdlist1"><code>PI:Number</code></dt>
<dd>
<p>Ratio of the circumference of a circle to its diameter, approximately 3.14159.</p>
</dd>
<dt class="hdlist1"><code>SQRT1_2:Number</code></dt>
<dd>
<p>Square root of 1/2; equivalently, 1 over the square root of 2, approximately 0.707.</p>
</dd>
<dt class="hdlist1"><code>SQRT2:Number</code></dt>
<dd>
<p>Square root of 2, approximately 1.414.</p>
</dd>
</dl>
</div>
<h4 id="static-methods-7" class="discrete">Static Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>abs(x):Number</code></dt>
<dd>
<p>Returns the absolute value of a number.</p>
</dd>
<dt class="hdlist1"><code>acos(x:Number):Number</code></dt>
<dd>
<p>Returns the arccosine of a number.</p>
</dd>
<dt class="hdlist1"><code>asinx:Number):Number</code></dt>
<dd>
<p>Returns the arcsine of a number.</p>
</dd>
<dt class="hdlist1"><code>atan(x:Number):Number</code></dt>
<dd>
<p>Returns the arctangent of a number.</p>
</dd>
<dt class="hdlist1"><code>atan2(y:Number,x:Number):Number</code></dt>
<dd>
<p>Returns the arctangent of the quotient of its arguments.</p>
</dd>
<dt class="hdlist1"><code>ceil(x):Number</code></dt>
<dd>
<p>Returns the smallest integer greater than or equal to a number.</p>
</dd>
<dt class="hdlist1"><code>cos(x):Number</code></dt>
<dd>
<p>Returns the arctangent of the quotient of its arguments.</p>
</dd>
<dt class="hdlist1"><code>exp(x):Number</code></dt>
<dd>
<p>Returns Enumber, where number is the argument, and E is Euler&#8217;s constant (2.718&#8230;&#8203;), the base of the natural logarithm.</p>
</dd>
<dt class="hdlist1"><code>floor(x):Number</code></dt>
<dd>
<p>Returns the largest integer less than or equal to a number.</p>
</dd>
<dt class="hdlist1"><code>log(x):Number</code></dt>
<dd>
<p>Returns the natural logarithm (loge, also ln) of a number.</p>
</dd>
<dt class="hdlist1"><code>max(value&#8230;&#8203;):Number</code></dt>
<dd>
<p>Returns the largest of zero or more numbers.</p>
</dd>
<dt class="hdlist1"><code>min(value&#8230;&#8203;):Number</code></dt>
<dd>
<p>Returns the smallest of zero or more numbers.</p>
</dd>
<dt class="hdlist1"><code>pow(base:Number,exponent:Number):Number</code></dt>
<dd>
<p>Returns base to the exponent power, that is, baseexponent.</p>
</dd>
<dt class="hdlist1"><code>random():Number</code></dt>
<dd>
<p>Returns a pseudorandom number between 0 and 1.</p>
</dd>
<dt class="hdlist1"><code>round(x:Number):Number</code></dt>
<dd>
<p>Returns the value of a number rounded to the nearest integer.</p>
</dd>
<dt class="hdlist1"><code>sin(x:Number):Number</code></dt>
<dd>
<p>Returns the sine of a number.</p>
</dd>
<dt class="hdlist1"><code>sqrt(x:Number):Number</code></dt>
<dd>
<p>Returns the positive square root of a number.</p>
</dd>
<dt class="hdlist1"><code>tan(x:Number):Number</code></dt>
<dd>
<p>Returns the tangent of a number.</p>
</dd>
</dl>
</div>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="_regexp"><a class="anchor" href="#_regexp"></a><a class="link" href="#_regexp">17.10. RegExp</a></h3>
<div class="paragraph">
<p><code>RegExp</code> does not have a super class.</p>
</div>
<h4 id="attributes-4" class="discrete">Attributes</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>global:Boolean</code></dt>
<dd>
<p>Whether to test the regular expression against all possible matches in a string, or only against the first.</p>
</dd>
<dt class="hdlist1"><code>ignoreCase:Boolean</code></dt>
<dd>
<p>Whether to ignore case while attempting a match in a string.</p>
</dd>
<dt class="hdlist1"><code>lastIndex:Number</code></dt>
<dd>
<p>The index at which to start the next match.</p>
</dd>
<dt class="hdlist1"><code>multiline:Boolean</code></dt>
<dd>
<p>Whether or not to search in strings across multiple lines.</p>
</dd>
<dt class="hdlist1"><code>source:String</code></dt>
<dd>
<p>The text of the pattern.</p>
</dd>
</dl>
</div>
<h4 id="methods-6" class="discrete">Methods</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>exec(str:String):Array</code></dt>
<dd>
<p>Executes a search for a match in its string parameter.</p>
</dd>
<dt class="hdlist1"><code>test(str:String):Boolean</code></dt>
<dd>
<p>Tests for a match in its string parameter.</p>
</dd>
</dl>
</div>
</div>
<div class="sect2 language-n4js">
<h3 id="_json"><a class="anchor" href="#_json"></a><a class="link" href="#_json">17.11. JSON</a></h3>
<div class="paragraph">
<p><code>JSON</code> is a global object and a subclass of <code>Object</code>. Its functionality is provided by two static methods.
It is not possible to create new instances of type JSON.</p>
</div>
<h4 id="attributes-5" class="discrete">Attributes</h4>
<div class="paragraph">
<p>The JSON object does not define own properties.</p>
</div>
<h4 id="methods-7" class="discrete">Methods</h4>
<div class="paragraph">
<p>The JSON object does not define own methods.</p>
</div>
<h4 id="static-methods-8" class="discrete">Static Methods</h4>
<div class="paragraph">
<p>The parse function parses a JSON text (a JSON-formatted String) and
produces an ECMAScript value. The JSON format is a restricted form of
ECMAScript literal. JSON objects are realized as ECMAScript objects.
JSON arrays are realized as ECMAScript arrays. JSON strings, numbers,
booleans, and null are realized as ECMAScript Strings, Numbers,
Booleans, and null. For detailed information see [<a href="appendix_c_bibliography.html#ECMA11a">ECMA11a(p.S15.12.2)</a>]</p>
</div>
<div class="paragraph">
<p>The optional reviver parameter is a function that takes two parameters
(key and value). It can filter and transform the results. It is called
with each of the key/value pairs produced by the parse and its return
value is used instead of the original value. If it returns what it
received, the structure is not modified. If it returns then the property
is deleted from the result.</p>
</div>
<div class="paragraph">
<p>The stringify function returns a String in JSON format representing an
ECMAScript value. It can take three parameters. The first parameter is
required. The value parameter is an ECMAScript value which is usually an
object or array, although it can also be a String, Boolean, Number or
null.</p>
</div>
<div class="paragraph">
<p>The optional replacer parameter is either a function that alters the way
objects and arrays are stringified or an array of Strings and Numbers
that act as a white list for selecting the object properties that will
be stringified.</p>
</div>
<div class="paragraph">
<p>The optional space parameter is a String or Number that allows the
result to have whitespace injected into it to improve human readability.</p>
</div>
<div class="paragraph">
<p>For detailed information see [<a href="appendix_c_bibliography.html#ECMA11a">ECMA11a(p.S15.12.3)</a>].</p>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Version 0.9<br>
Last updated 2019-08-08 13:15:33 CEST
</div>
</div>
<!-- ************* docinfo-footer *************************************************************** -->
<div class="Grid social" style="color:#d5dfea">
<div class="Cell Cell--2-12 m-Cell--withMargin">
<h2>Quick Links</h2>
<ul>
<li><a href="../downloads.html">Download</a></li>
<li><a href="../userguides/index.html">Documentation</a></li>
<li><a href="https://github.com/eclipse/n4js/">Source</a></li>
<li><a href="https://github.com/eclipse/n4js/issues">Issues</a></li>
</ul>
</div>
<div class="Cell Cell--2-12 m-Cell--withMargin">
<br/><br/>
<ul>
<li><a href="https://www.eclipse.org/forums/index.php/f/365/">Forum</a></li>
<li><a href="http://n4js.blogspot.de/">Blog</a></li>
<li><a href="https://dev.eclipse.org/mailman/listinfo/n4js-dev">Mailing List</a></li>
<li><a href="https://projects.eclipse.org/projects/technology.n4js">Eclipse Project Page</a></li>
<li><a href="https://twitter.com/n4jsdev">Tweets by n4jsdev</a></li>
</ul>
</div>
<div class="Cell Cell--2-12 m-Cell--withMargin">
<br/><br/>
<ul>
<li><a href="http://www.eclipse.org/">Eclipse Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/legal/">Legal</a></li>
</ul>
</div>
<div style="clear: both; height: 0; overflow: hidden;"></div>
</div>
<!-- ************* UI Scripts ************* -->
<script type="text/javascript" src="scripts/back-to-top.js"></script>
<script type="text/javascript" src="scripts/treeview.js"></script>
<script type="text/javascript" src="scripts/toc.js"></script>
<!-- ************* Prism.js Syntax Highlighting ************* -->
<script src="scripts/prism.js"></script>
<script type="text/javascript">
// Add the 'toclist' id for search function
$(".toc2 > ul").attr('id', 'toclist');
// Generate a Search input form
$("#toclist > li:first-of-type").before('<input type="text" id="pagesearch" onkeyup="search()" placeholder="Search for section...">');
$("#toclist > li:first-of-type").before('<i id="clear" class="fa fa-times-circle-o"></i>');
$("#clear").click(function(){
$("#pagesearch").val('');
search();
$('.toc2 > ul').treeView('collapseAll');
});
// intialize Treeview.js
$(".toc2 > ul").treeView();
// Initialize Scrollspy
</script>
<!-- ************* docinfo-footer *************************************************************** -->
</body>
</html>