JavaScript Feature Reference

Last reviewed/updated: 29 Jul 2018 | Published: 20 Mar 2014 | Status: Active
Web browser support: Internet Explorer 10+, Edge 12+, Firefox 6+, Chrome 30+, Opera 17+

1. Introduction

A list of JavaScript features (i.e., properties, methods, objects, etc.) with their purpose, availability, and web browser support:   @@iterator Property   |   arguments Object   |   Array Destructuring Syntax   |   Arrow Function Syntax   |   bind() Method   |   class Syntax   |   classList Property   |   className Property   |   Concise Method Syntax   |   create() Method   |   dataset Property   |   defineProperty() Method   |   endsWith() Method   |   entries() Method On Arrays   |   entries() Method On Maps   |   entries() Method On Sets   |   find() Method   |   findIndex() Method   |   for...of Statement   |   forEach() Method On Arrays   |   forEach() Method On Maps   |   forEach() Method On Sets   |   Generator Function   |   Generator Object   |   getAttribute() Method   |   getElementById() Method   |   getElementsByClassName() Method   |   getOwnPropertyDescriptor() Method   |   getPrototypeOf() Method   |   hasOwnProperty() Method   |   includes() Method   |   indexOf() Method On Arrays   |   indexOf() Method On Strings   |   innerHTML Property   |   insertAdjacentHTML() Method   |   instanceof Operator   |   isArray() Method   |   isPrototypeOf() Method   |   JSON Object   |   keys() Method On Arrays   |   keys() Method On Maps   |   keys() Method On Sets   |   let Declaration   |   localStorage Object   |   Map Object   |   Module   |   name Property   |   new.target Metaproperty   |   Object Destructuring Syntax   |   Object Literal Accessor Property Syntax   |   Parameter Default Value   |   Promise Object   |   propertyIsEnumerable() Method   |   querySelectorAll() Method   |   Rest Parameter   |   scrollIntoView() Method   |   Set Object   |   setPrototypeOf() Method   |   setTimeout() Method   |   splice() Method   |   Spread Operator In Array Literals   |   Spread Operator In Function Calls   |   Spread Operator In Math Object Methods   |   Spread Operator In Object Literals   |   startsWith() Method   |   style Object   |   [Symbol.iterator] Property   |   Template Literal Syntax   |   Template Tag Syntax   |   TypedArray Object   |   values() Method On Arrays   |   values() Method On Maps   |   values() Method On Sets.

1.1. Abbreviations

  • IE = Internet Explorer.
  • ED = Edge = EdgeHTML rendering engine (ED12+) and/or Edge browser (ED20+).
  • FF = Firefox.
  • SF = Safari.
  • CH = Chrome.
  • OP = Opera.

2. JavaScript Feature Reference

JavaScript Feature Reference
Feature Purpose Available On/In Web Browser Support Note
arguments Object
  • Get value of arguments passed into function.
  • Function reference type (i.e., functions).
  • Represents arguments passed into function, not function definition parameters.
  • Array-like object (i.e., has length property and numeric index).
  • arguments[0] represents first argument.
  • length property returns number of arguments passed into function.
Array Destructuring Syntax
  • Assign array values to variables.
  • Wherever variable declarations are valid.
  • Left side of assignment operator is destructuring pattern (i.e., array literal of variable identifiers corresponding to initializer values).
  • Right side of assignment operator is initializer (i.e., list of values using array literal syntax).
  • Left side variables assigned right side values.
  • ECMAScript 2015.
Arrow Function Syntax
  • Shorthand function definition syntax.
  • In place of traditional function syntax wherever functions are valid.
  • No own this, super, arguments, and new.target bindings. Rather, values come from closest containing non-arrow function.
  • No function internal [[Construct]] method. Therefore, cannot call with new operator and cannot use as constructor.
  • Since cannot use as constructor, no constructor prototype property.
  • Best suited for functions, not methods.
  • ECMAScript 2015.
bind() Method
  • Create new function from existing function with this value bound to bind() method first argument, and/or with arguments passed to existing function bound to bind() method subsequent arguments.
  • Function reference type (i.e., functions).
  • New (bound) function wraps and typically executes existing (wrapped) function.
  • Bound function this value bound to bind() method first argument.
  • Wrapped function arguments bound to bind() method subsequent arguments.
  • Bound function arguments passed to wrapped function subsequent to bind() method arguments.
class Syntax
  • Alternative object definition syntax.
  • In place of constructor wherever constructors are valid.
classList Property
  • Get reference to HTML class attribute value.
  • Get/set value on classList property.
  • Element.
  • Has add(), contains(), remove(), and toggle() methods.
  • Returns DOMTokenList.
className Property
  • Get reference to HTML class attribute value.
  • Get/set value on className property.
  • Element.
  • Use add/assign operator (+=) to append value to end of existing value. To space separate values, include space before value: element.className += " class-two".
  • Returns DOMString.
  • Document Object Model (HTML) Level 1 (w3.org).
Concise Method Syntax
  • Shorthand method definition syntax.
  • In place of traditional method syntax wherever methods are valid.
  • ECMAScript 2015.
create() Method
  • Create object using prototype of another object.
  • Object constructor.
  • Prototypal inheritance.
dataset Property
  • Create custom HTML element attributes.
  • Get reference to HTML data-* attribute value.
  • Get/set value on dataset property.
  • Element.
  • User agents lowercase HTML attribute names. Therefore, for HTML data-* attribute and JavaScript dataset.* property, use lowercase for * throughout.
defineProperty() Method
  • Create data or accessor property.
  • Change data or accessor property attribute values.
  • Object constructor.
  • If specified property does not exist, creates property.
  • If specified property exists, changes attribute values.
  • Data property attributes: value, writable, enumerable, configurable.
  • Accessor property attributes: get, set, enumerable, configurable.
  • When create property, unspecified writable, enumerable, and configurable attributes default to boolean false, and unspecified get or set attributes default to undefined.
  • Accessor property requires getter function, or setter function, or getter and setter function.
  • To create accessor property, also see object literal accessor property syntax (below).
endsWith() Method
  • Return boolean indicating if string found at end of string.
  • String primitive type (i.e., strings).
  • Optional second argument narrows search.
  • ECMAScript 2015.
entries() Method On Arrays
  • Return iterator whose next() method return object value property is set to two element array with first element set to array element numeric index and second element set to array element value.
  • Array reference type (i.e., arrays).
  • for...of statement (below) with entries() method on ["a", "b", "c"] array returns: 1.) [0, "a"], 2.) [1, "b"], 3.) [2, "c"].
  • ECMAScript 2015.
entries() Method On Maps
  • Return iterator whose next() method return object value property is set to two element array with first element set to map element key and second element set to map element value.
  • Map reference type (i.e., maps).
  • Default iterator for maps.
  • for...of statement (below) with entries() method on {"keyOne" => "a", "keyTwo" => "b", "keyThree" => "c"} map returns: 1.) ["keyOne", "a"], 2.) ["keyTwo", "b"], 3.) ["keyThree", "c"].
  • ECMAScript 2015.
entries() Method On Sets
  • Return iterator whose next() method return object value property is set to two element array with both elements set to set element value.
  • Set reference type (i.e., sets).
  • for...of statement (below) with entries() method on {"a", "b", "c"} set returns: 1.) ["a", "a"], 2.) ["b", "b"], 3.) ["c", "c"].
  • ECMAScript 2015.
find() Method
  • Iterate over, and run callback function on, each array element until a condition is met, at which point stop and return current array element value.
  • Array reference type (i.e., arrays).
  • Two arguments: 1.) callback function to run on each array element (required), and 2.) execution context variable object to associate with the callback function (i.e., callback function this value) (optional).
  • Callback function arguments; 1.) array element value (required), 2.) array element numeric index (optional), and 3.) array object itself (optional).
  • If condition not met, returns undefined.
  • Does not modify the array it is called on.
  • ECMAScript 2015.
findIndex() Method
  • Iterate over, and run callback function on, each array element until a condition is met, at which point stop and return current array element numeric index.
  • Array reference type (i.e., arrays).
  • Two arguments: 1.) callback function to run on each array element (required), and 2.) execution context variable object to associate with the callback function (i.e., callback function this value) (optional).
  • Callback function arguments; 1.) array element value (required), 2.) array element numeric index (optional), and 3.) array object itself (optional).
  • If condition not met, returns -1.
  • Does not modify the array it is called on.
  • ECMAScript 2015.
for...of Statement
  • Iterate over each iterable element.
  • Shorthand iteration syntax for iterables.
  • In place of for statements/loops wherever for statements/loops are valid.
  • Eliminates need to initialize, evaluate, and increment numeric index variable to control iteration.
  • Calls iterator next() method until next() method return object done property is set to true.
  • Throws error on non-iterable.
  • ECMAScript 2015.
forEach() Method On Arrays
  • Iterate over, and run function on, each array element.
  • Array reference type (i.e., arrays).
  • Eliminates need to use a for statement/loop to control iteration.
  • Two arguments: 1.) function to run on each array element (required), and 2.) execution context variable object to associate with the function (i.e., function this value) (optional).
  • Function arguments; 1.) array element value (required), 2.) array element numeric index (optional), and 3.) array object itself (optional).
  • Does not modify the array it is called on.
forEach() Method On Maps
  • Iterate over, and run function on, each map key-value pair.
  • Map reference type (i.e., maps).
  • Two arguments: 1.) function to run on each map key-value pair (required), and 2.) execution context variable object to associate with the function (i.e., function this value) (optional).
  • Function arguments; 1.) value (required), 2.) key (optional), and 3.) map object itself (optional).
  • Does not modify the map it is called on.
  • ECMAScript 2015.
forEach() Method On Sets
  • Iterate over, and run function on, each set value.
  • Set reference type (i.e., sets).
  • Two arguments: 1.) function to run on each set value (required), and 2.) execution context variable object to associate with the function (i.e., function this value) (optional).
  • Function arguments; 1.) value (required), 2.) value repeated (optional), and 3.) set object itself (optional).
  • Does not modify the set it is called on.
  • ECMAScript 2015.
Generator Function (function*)
  • Wherever functions are valid.
  • Also known as generator (lowecase g).
  • Can use function declaration, function expression, and object method syntax, not arrow function syntax (above).
  • Calling generator function does not execute generator function body code. Instead, calling generator function returns Generator object. Calling Generator object next() method executes generator function body code.
  • yield statement stops generator function body code execution.
  • yield expression value set on Generator object next() method return object value property.
  • ECMAScript 2015.
Generator Object
  • An iterator.
  • An object that conforms with iterable protocol and iterator protocol.
  • Window.
  • Also known as Generator.
  • Returned by generator function (above).
  • Has next() method that: 1.) executes generator function body code through yield or return statement and then stops execution; 2.) returns object with value property set to yield or return expression value, and done property set to boolean indicating if value property was not set to yield expression value; and 3.) is typically called multiple times until required yield expression values are returned.
  • If previous next() reached return, subsequent next() does not execute generator function body code and returns {value: undefined, done: true}.
  • If previous next() reached yield, subsequent next(): 1.) executes generator function body code from after stopped yield through yield or return statement and then stops execution; and 2.) returns object with value property set to yield or return expression value, and done property set to boolean indicating if value property was not set to yield expression value.
  • If next() does not reach yield or return; 1.) entire/remaining generator function body code is executed, and 2.) current and subsequent next() return {value: undefined, done: true}.
  • Not a proper reference type like Date, Object, Array, Function, Map, etc. (i.e., window.Generator property does not exist).
  • ECMAScript 2015.
getAttribute() Method
  • Get reference to HTML attribute value.
  • Element.
getElementById() Method
  • Get reference to node by HTML id attribute value.
  • Document.
getElementsByClassName() Method
  • Get reference to nodes by HTML class attribute value(s).
  • Document.
  • Element.
  • Use space separated list (order independent) to get by multiple values (AND, not OR): getElementsByClassName("class-one class-two class-three").
  • Returns NodeList.
getOwnPropertyDescriptor() Method
  • Get property descriptor object representing own property attribute values.
  • Object constructor.
  • Own property also known as instance/custom/direct property.
  • Property descriptor object properties for own data properties: value, writable, enumerable, configurable.
  • Property descriptor object properties for own accessor properties: get, set, enumerable, configurable.
  • Returns undefined if own property does not exist.
getPrototypeOf() Method
  • Get prototype (i.e., object internal [[Prototype]] property value).
  • Object constructor.
  • Formalizes nonstandard Object.prototype.__proto__ property getter function.
hasOwnProperty() Method
  • Return boolean indicating if object property is an own property.
  • Object reference type (i.e., objects).
  • Own property also known as instance/custom/direct property.
  • Returns false if property does not exist.
includes() Method
  • Return boolean indicating if string found in string.
  • String primitive type (i.e., strings).
  • Optional second argument narrows search.
  • ECMAScript 2015.
indexOf() Method On Arrays
  • Return numeric index of element in array.
  • Array reference type (i.e., arrays).
  • Returns -1 number if element not found in array.
indexOf() Method On Strings
  • Return numeric index of string in string.
  • String primitive type (i.e., strings).
  • Returns -1 number if string not found in string.
innerHTML Property
  • Get reference to element's child node(s).
  • Get/set value on innerHTML.
  • Element (not all).
  • Returns empty string (i.e., "") on empty element (e.g., <div></div>).
insertAdjacentHTML() Method
  • Insert markup (and content) into HTML document.
  • Element.
instanceof Operator
  • Return boolean indicating if variable is instance of constructor.
  • Return boolean indicating if constructor prototype property exists in object's prototype chain.
  • Window.
  • Variable holding primitive (i.e., boolean, number, string, undefined, or null literal) value is not an object, and, therefore, is not an instance of any constructor (i.e., returns false).
  • Calling Boolean, Number, or String constructor with new operator (not recommended) returns object (not primitive value) which is instance of both object's constructor (i.e., Boolean, Number, or String) and Object constructor.
  • Reference values (i.e., functions, arrays and objects), including those using literal syntax, are instances of both reference type's constructor (i.e., Function, Array, or Object) and Object constructor.
isArray() Method
  • Return boolean indicating if passed value is an array.
  • Array constructor.
isPrototypeOf() Method
  • Return boolean indicating if object or prototype exists in object's prototype chain.
  • Object reference type (i.e., objects) (1).
  • Constructor prototype (i.e., prototypes).
  • Called on objects or prototypes.
  • Returns boolean indicating if object or prototype that isPrototypeOf() is called on is in prototype chain of object passed to isPrototypeOf().
JSON Object
  • Convert JavaScript value into JSON string (serialize).
  • Convert JSON string into JavaScript value (parse).
  • Window.
  • Has JSON.stringify() method to serialize.
  • Has JSON.parse() method to parse.
keys() Method On Arrays
  • Return iterator whose next() method return object value property is set to array element numeric index.
  • Array reference type (i.e., arrays).
keys() Method On Maps
  • Return iterator whose next() method return object value property is set to map element key.
  • Map reference type (i.e., maps).
  • for...of statement (above) with keys() method on {"keyOne" => "a", "keyTwo" => "b", "keyThree" => "c"} map returns: 1.) "keyOne", 2.) "keyTwo", 3.) "keyThree".
  • ECMAScript 2015.
keys() Method On Sets
  • Return iterator whose next() method return object value property is set to set element value.
  • Set reference type (i.e., sets).
let Declaration
  • Define variable whose scope is the containing block of code (i.e., define variable accessible inside, not outside, the containing block of code).
  • In place of var declarations wherever variable declarations are valid.
  • Unlike var; 1.) global abatement, 2.) no hoisting, and 3.) block (a.k.a., lexical) scope/binding to blocks other than function.
  • ECMAScript 2015.
localStorage Object
  • Persistent client data storage across web browser sessions, independent of cookies, not transmitted to server.
  • Get/set key-value pairs.
  • Window.
  • Part of client data storage standard known as Web Storage.
  • Support requires web page served by web server (i.e., fails if web page opened directly in web browser).
  • Keys also known as items.
  • Has getItem()/setItem() methods. Can also get/set using dot or bracket notation.
  • Includes length property.
Map Object
  • Create iterable collection of unique key-value pairs.
  • Window.
  • Keys and values can be primitive values or reference values.
  • Can be initialized with an iterable whose elements/items are key-value pairs (i.e., an array of key-value pair arrays or a map).
  • Key-value pairs also known as elements/items.
  • size property returns number of key-value pairs in Map object.
  • ECMAScript 2015.
Module
  • Create module-specific private scope that does not add properties to Window object (i.e., does not clutter global scope).
  • Window.
  • Types: 1.) Embedded: script element with type="module" attribute; 2.) External: filename.js; and 3.) External loaded: filename.js and script element with type="module" and src="path_to_filename.js" attributes.
  • A module can be loaded, not imported. Only a module's exports can be imported. A module's exports can only be imported by another module. A module's exports constitute the module's interface.
  • export and import statements must be located at the top level of the module, not within any block ({}) of code inside the module.
  • Module code executes in strict mode and asynchronously, with no way to change either.
  • ED, CH, and OP, not FF, support requires web page served by web server (i.e., fails if web page opened directly in web browser).
  • ECMAScript 2015.
name Property
  • Identify function by name.
  • Function reference type (i.e., functions).
  • ECMAScript 2015.
new.target Metaproperty
  • Determine if function/constructor was called with new operator.
  • Function reference type (i.e., functions).
  • Constructor (i.e., constructor functions).
  • If function/constructor called with new, function/constructor internal [[Construct]] method is executed and new.target is reference to function/constructor.
  • If function/constructor called without new, function/constructor internal [[Call]] method is executed and new.target is undefined.
  • ECMAScript 2015.
Object Destructuring Syntax
  • Assign object property values to variables.
  • Wherever variable declarations are valid.
  • Left side of assignment operator is destructuring pattern (i.e., object literal of variable identifiers corresponding to initializer properties).
  • Right side of assignment operator is initializer (i.e., list of property-value pairs using object literal syntax).
  • Left side variables assigned right side property values.
  • ECMAScript 2015.
Object Literal Accessor Property Syntax
  • Create accessor property using object literal syntax.
  • Object literal.
  • Accessor property requires getter function, or setter function, or both getter and setter function.
  • To create accessor property, also see defineProperty() method (above).
Parameter Default Value
  • Assign default value to function parameter.
  • Function reference type (i.e., functions).
  • ECMAScript 2015.
Promise Object
  • Create object representing, and responding to the state of, an asynchronous operation and its value.
  • Window.
  • Alternative to JavaScript event model and third party callback function patterns for responding to asynchronous operations.
  • If asynchronous operation completed successfully, promise is in fulfilled state, and Promise constructor executor function calls resolve() function, which triggers Promise object then() method argument (a function known as fulfillment handler, which is executed asynchronously). The asynchronous operation value is passed from resolve() function to fulfillment handler.
  • If asynchronous operation completed unsuccessfully, promise is in rejected state, and Promise constructor executor function calls reject() function, which triggers Promise object catch() method argument (a function known as rejection handler, which is executed asynchronously). The asynchronous operation Error object/value is passed from reject() function to rejection handler.
  • ECMAScript 2015.
propertyIsEnumerable() Method
  • Return boolean indicating if object property is enumerable.
  • Object reference type (i.e., objects).
  • A property is enumerable if its internal [[Enumerable]] attribute is set to true.
  • Corresponds to property internal [[Enumerable]] attribute value.
  • Returns false if property does not exist.
querySelectorAll() Method
  • Get reference to nodes by CSS selector.
  • Document.
  • DocumentFragment.
  • Element.
  • CSS selectors include type selectors, ID selectors, class selectors, etc.
  • Returns static NodeList.
Rest Parameter
  • Assign arguments (after those for parameters) to array variable.
  • Function reference type (i.e., functions).
  • Denoted by three full stop (a.k.a., period, dot) (.) characters before array name (e.g., ...arrayName).
  • Array variable is function-scoped.
  • ECMAScript 2015.
scrollIntoView() Method
  • Scroll web page to position element in viewport.
  • Element.
  • Intrapage. Programmatic alternative to HTML <a href='#foo'>Foo</a>.
  • scrollIntoView() positions element to top of viewport.
  • scrollIntoView(true) positions element to top of viewport.
  • scrollIntoView(false) positions element to bottom of viewport.
Set Object
  • Create iterable collection of unique values.
  • Window.
  • Values can be primitive values or reference values.
  • Can be initialized with an iterable.
  • Values also known as elements/items.
  • size property returns number of values in Set object.
  • ECMAScript 2015.
setPrototypeOf() Method
  • Set prototype (i.e., object internal [[Prototype]] property value) to another prototype or to null.
  • Object constructor.
  • Slow. Affects inheritance, which can cause unexpected results. Instead of changing existing object prototype with setPrototypeOf(), create new object with desired prototype using Object.create().
  • Formalizes nonstandard Object.prototype.__proto__ property setter function.
  • ECMAScript 2015.
setTimeout() Method
  • Execute code asynchronously after specified amount of time.
  • Window.
  • setTimeout() method code parsed synchronously as normal.
  • Code to execute asynchronously can be a function (a.k.a., callback function), or a string interpreted as code (like eval() method, not recommended and not discussed further).
  • Time counted from when setTimeout() method code parsed, not from when any previous setTimeout() method callback function code executed.
  • Time expressed in number of milliseconds (e.g., 1000). If time not specified, default is 0.
  • After specified amount of time, callback function placed in job queue. If job queue empty, callback function executed immediately. Otherwise, callback function waits its turn in job queue to execute.
splice() Method
  • Delete, insert, and replace element in array.
  • Array reference type (i.e., arrays).
  • Acts directly on array, not on copy of array.
  • Deleting and inserting change array length.
  • Returns array of deleted/replaced array elements, or empty array if nothing deleted/replaced.
Spread Operator In Array Literals
  • Split array into individual elements in array literal.
  • Array reference type (i.e., arrays).
  • Denoted by three full stop (a.k.a., period, dot) (.) characters before array name (e.g., ...arrayName).
  • ECMAScript 2015.
Spread Operator In Function Calls
  • Split array into individual elements in function call to pass as arguments.
  • Function reference type (i.e., functions).
  • Denoted by three full stop (a.k.a., period, dot) (.) characters before array name (e.g., ...arrayName).
  • ECMAScript 2015.
Spread Operator In Math Object Methods
  • Split array into individual elements in Math object method.
  • Math object methods (e.g., Math.min()).
  • Denoted by three full stop (a.k.a., period, dot) (.) characters before array name (e.g., ...arrayName).
  • ECMAScript 2015.
Spread Operator In Object Literals
  • Split object into individual property-value pairs in object literal.
  • Object reference type (i.e., objects).
  • Denoted by three full stop (a.k.a., period, dot) (.) characters before object name (e.g., ...objectName).
  • ECMAScript 2015.
startsWith() Method
  • Return boolean indicating if string found at start of string.
  • String primitive type (i.e., strings).
  • Optional second argument narrows search.
  • ECMAScript 2015.
style Object
  • Get reference to HTML style attribute value.
  • Get/set value on style object.
  • Element (those which support the HTML style attribute).
  • Represents inline styles, not the styles of embedded or external style sheets.
[Symbol.iterator] Property (a.k.a., @@iterator property)
  • The [Symbol.iterator]() method.
  • Return iterable default iterable.
  • Define an iterable.
  • String primitive type (i.e., strings).
  • Array reference type (i.e., arrays).
  • TypedArray objects (i.e., typed arrays).
  • Map reference type (i.e., maps).
  • Set reference type (i.e., sets).
  • Generator objects (above).
  • The [Symbol.iterator] property (a.k.a., @@iterator property) is a method, the [Symbol.iterator]() method (a.k.a., @@iterator method), that returns the iterable default iterator.
  • An iterable is an object with [Symbol.iterator] property.
  • Strings, arrays, typed arrays, sets, maps, and Generator objects (above) have [Symbol.iterator] property, and, therefore, are iterables.
  • Iterables are designed to be used with for...of statement (above).
  • ECMAScript 2015.
Template Literal Syntax
  • Format string.
  • Create multiline string.
  • Substitute variable value for placeholder in string.
  • In place of strings wherever strings are valid.
  • Delimited by grave accent (a.k.a., backtick) (`) characters, not quotation mark (") or apostrophe (') characters.
  • ECMAScript 2015.
Template Tag Syntax
  • Associate function with template literal, call function passing in template literal components as arguments, generate and return value.
  • Wherever template literals and functions are valid.
  • ECMAScript 2015.
TypedArray Object
  • Better bitwise data handling performance.
  • Type-specific view/interface to array buffer.
  • Window.
  • Alternative to type-nonspecific DataView view/interface to array buffer.
  • Array-like object (i.e., has length property and numeric index).
  • Not a proper reference type like Date, Object, Array, Function, Map, etc. (i.e., window.TypedArray property does not exist).
  • ECMAScript 2015.
values() Method On Arrays
  • Return iterator whose next() method return object value property is set to array element value.
  • Array reference type (i.e., arrays).
  • Default iterator for arrays and typed arrays.
  • for...of statement (above) with values() method on ["a", "b", "c"] array returns: 1.) "a", 2.) "b", 3.) "c".
  • ECMAScript 2015.
values() Method On Maps
  • Return iterator whose next() method return object value property is set to map element value.
  • Map reference type (i.e., maps).
  • for...of statement (above) with values() method on {"keyOne" => "a", "keyTwo" => "b", "keyThree" => "c"} map returns: 1.) "a", 2.) "b", 3.) "c".
  • ECMAScript 2015.
values() Method On Sets
  • Return iterator whose next() method return object value property is set to set element value.
  • Set reference type (i.e., sets).
  • Default iterator for sets.
  • for...of statement (above) with values() method on {"a", "b", "c"} set returns: 1.) "a", 2.) "b", 3.) "c".
  • ECMAScript 2015.
(1) The ECMAScript specifications describe the isPrototypeOf() method only on constructor prototype (i.e., prototypes), not also on Object reference type (i.e., objects). That when the create() method was added to the ECMAScript specification, apparently the isPrototypeOf() method was not also described on objects, and that, therefore, apparently web browsers implemented the isPrototypeOf() method on objects independent of ECMAScript, seems odd.
(2) FF support requires setting FF about:config | dom.moduleScripts.enabled to true.

3. Resources And Additional Information