Object

Object クラスは JavaScript のデータ型の一つを表します。これは様々なキー付きコレクションとより複雑な実態を格納するために使用されます。Object は Object() コンストラクターまたはオブジェクト初期化子/リテラル構文を使用して生成することができます。

解説

JavaScript のほぼすべてのオブジェクトが Object のインスタンスです。一般的なオブジェクトは、プロパティを (メソッドを含めて) Object.prototype から継承していますが、これらのプロパティはシャドウ化 (別名オーバーライド) されている場合があります。しかし、意図的にそうではない Object を生成したり (例えば Object.create(null) によって)、変更した結果そうではなくなる場合 (例えば Object.setPrototypeOf) もあります。

Object プロトタイプオブジェクトへの変更は、その変更の対象となるプロパティやメソッドがプロトタイプチェーンに沿ってさらにオーバーライドされない限り、プロトタイプチェーンを通してすべてのオブジェクトに表示されます。これはとても強力ですが、オブジェクトの動作をオーバーライドしたり拡張したりするのは潜在的に危険をはらむ仕組みでもあります。

Object コンストラクターは、指定された値のオブジェクトラッパーを生成します。

  • 値が null または undefined である場合、空のオブジェクトを生成して返します。
  • それ以外の場合は、与えられた値に関連する型のオブジェクトを返します。
  • 値がすでにオブジェクトであった場合は、その値を返します。

コンストラクター以外のコンテキストで呼び出された場合、Objectnew Object() と同等に動作します。

オブジェクト初期化子/リテラル構文も参照してください。

オブジェクトからプロパティを削除する

オブジェクト自体には、自身のプロパティを削除するメソッドはありません ( Map.prototype.delete()) など)。これを行うには、delete 演算子を使用する必要があります。

コンストラクター

Object()
Object コンストラクターは指定された値のオブジェクトラッパーを生成します。

静的メソッド

Object.assign()
1 個以上のソースオブジェクトから、自身の列挙可能なプロパティの値をすべてターゲットオブジェクトにコピーします。
Object.create()
指定されたプロトタイプオブジェクトとプロパティから、新しいオブジェクトを生成します。
Object.defineProperty()
指定された記述子で記述された名前付きプロパティをオブジェクトへ追加します。
Object.defineProperties()
指定された記述子で記述された複数の名前付きプロパティをオブジェクトへ追加します。
Object.entries()
指定したオブジェクトの自身の列挙可能な文字列プロパティのすべての [key, value] ペアを含む配列を返します。
Object.freeze()
オブジェクトを凍結します。他のコードがプロパティを削除したり変更したりすることができなくなります。
Object.fromEntries()
反復可能な [key, value] の組から新しいオブジェクトを返します。(これは Object.entries の逆です。)
Object.getOwnPropertyDescriptor()
オブジェクトの名前付きプロパティに対応するプロパティ記述子を返します。
Object.getOwnPropertyDescriptors()
オブジェクトの自身のすべてのプロパティの記述子を含むオブジェクトを返します。
Object.getOwnPropertyNames()
指定したオブジェクトの自身の列挙可能および列挙不可なすべてのプロパティの名前を、配列として返します。
Object.getOwnPropertySymbols()
指定したオブジェクト上に直接存在するすべてのシンボルプロパティからなる配列を返します。
Object.getPrototypeOf()
指定されたオブジェクトのプロトタイプ (内部の [[Prototype]] プロパティ) を返します。
Object.is()
二つの値が同じ値であるかどうかを比較します。NaN 値はすべて同じとして扱われます (抽象的等価比較とも厳密等価比較とも異なります)。
Object.isExtensible()
オブジェクトの拡張が許可されているかどうかを判定します。
Object.isFrozen()
オブジェクトが凍結されているかどうかを判定します。
Object.isSealed()
オブジェクトが封印されているかどうかを判定します。
Object.keys()
指定されたオブジェクト自身の列挙可能なプロパティの名前をすべて含む配列を返します。
Object.preventExtensions()
オブジェクトに対するあらゆる拡張を禁止します。
Object.seal()
オブジェクトを封印し、オブジェクトのプロパティの削除を禁止します。
Object.setPrototypeOf()
プロトタイプ (内部の [[Prototype]] プロパティ) を設定します。
Object.values()
指定したオブジェクトの自身の列挙可能な文字列プロパティのすべてに対応する値を含む配列を返します。

インスタンスプロパティ

Object.prototype.constructor
オブジェクトのプロトタイプを生成する関数を指定します。
Object.prototype.__proto__
オブジェクトがインスタンス化されたとき、プロトタイプとして使用されたオブジェクトを指します。
Object.prototype.__noSuchMethod__
未定義のオブジェクトメンバーがメソッドとして呼び出された際に実行される関数を定義します。

インスタンスメソッド

Object.prototype.__defineGetter__()
指定したプロパティに、アクセスの際に実行されて戻り値を返す関数を関連付けます。
Object.prototype.__defineSetter__()
指定したプロパティに、設定の際に実行されてプロパティを変更する関数を関連付けます。
Object.prototype.__lookupGetter__()
__defineGetter__() メソッドによって特定のプロパティに関連付けされた関数を返します。
Object.prototype.__lookupSetter__()
__defineSetter__() メソッドによって特定のプロパティに関連付けされた関数を返します。
Object.prototype.hasOwnProperty()
指定したプロパティが、プロトタイプチェーンを通じて継承されたものではなくオブジェクトが直接持っているプロパティかどうかを示す真偽値を返します。
Object.prototype.isPrototypeOf()
指定したオブジェクトが、このメソッドを呼び出した元であるオブジェクトのプロトタイプチェーンにあるかどうかを示す真偽値を返します。
Object.prototype.propertyIsEnumerable()
内部の ECMAScript [[Enumerable]] 属性 の設定状態を示す真偽値を返します。
Object.prototype.toSource()
このメソッドの呼び出し元オブジェクトを表すオブジェクトリテラルからなるソース文字列を返します。この値を使って新しいオブジェクトを作成できます。
Object.prototype.toLocaleString()
toString() を呼び出します。
Object.prototype.toString()
指定したオブジェクトを表す文字列を返します。
Object.prototype.unwatch()
オブジェクトのプロパティから代入処理を監視するウォッチポイントを取り除きます。
Object.prototype.valueOf()
指定したオブジェクトのプリミティブ値を返します。
Object.prototype.watch()
オブジェクトのプロパティに代入処理を監視するウォッチポイントを追加します。

undefinednull データ型を与えられた Object を使用する

次の例は、o に空の Object オブジェクトを格納します。

let o = new Object()
let o = new Object(undefined)
let o = new Object(null)

Boolean オブジェクトの生成に Object を使用する

次の例は、oBoolean オブジェクトを格納します。

// o = new Boolean(true) に同じ
let o = new Object(true)
// to o = new Boolean(false) に同じ
let o = new Object(Boolean())

オブジェクトのプロトタイプ

Object.prototype の既存のメソッドの動作を変更する場合は、既存のロジックの前または後で独自の拡張を囲む形でコードを挿入するようにしてください。例えば、この (テストされていない) コードは、組込みロジックや誰かの拡張機能が実行される前に、条件付きで独自のロジックを実行します。

関数が呼び出されると、呼び出す引数は配列状「変数」 arguments に保持されます。例えば myFn(a, b, c) の呼び出しでは、myFn の本体内での引数は (a, b, c) に対応する 3 つの配列状要素を含みます。

フックを使ってプロトタイプを変更する場合は、関数で apply() を呼び出すことで、this と引数 (呼び出し状態) を現在の動作に渡します。このパターンは、Node.prototypeFunction.prototype など、どんなプロトタイプにも使えます。

var current = Object.prototype.valueOf;

// Since my property "-prop-value" is cross-cutting and isn't always
// on the same prototype chain, I want to modify Object.prototype: 
Object.prototype.valueOf = function() {
  if (this.hasOwnProperty('-prop-value')) {
    return this['-prop-value'];
  } else {
    // It doesn't look like one of my objects, so let's fall back on 
    // the default behavior by reproducing the current behavior as best we can.
    // The apply behaves like "super" in some other languages.
    // Even though valueOf() doesn't take arguments, some other hook may.
    return current.apply(this, arguments);
  }
}

JavaScript はサブクラスオブジェクトを持っていないため、プロトタイプはオブジェクトとして機能する特定の関数の「基本クラス」オブジェクトを作成するための有用な回避策です。例えば、以下のようになります。

var Person = function(name) {
  this.name = name;
  this.canTalk = true;
};

Person.prototype.greet = function() {
  if (this.canTalk) {
    console.log('Hi, I am ' + this.name);
  }
};

var Employee = function(name, title) {
  Person.call(this, name);
  this.title = title;
};

Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee; //If you don't set Object.prototype.constructor to Employee, 
                                           //it will take prototype.constructor of Person (parent). 
                                           //To avoid that, we set the prototype.constructor to Employee (child).


Employee.prototype.greet = function() {
  if (this.canTalk) {
    console.log('Hi, I am ' + this.name + ', the ' + this.title);
  }
};

var Customer = function(name) {
  Person.call(this, name);
};

Customer.prototype = Object.create(Person.prototype);
Customer.prototype.constructor = Customer; //If you don't set Object.prototype.constructor to Customer, 
                                           //it will take prototype.constructor of Person (parent). 
                                           //To avoid that, we set the prototype.constructor to Customer (child).


var Mime = function(name) {
  Person.call(this, name);
  this.canTalk = false;
};

Mime.prototype = Object.create(Person.prototype);
Mime.prototype.constructor = Mime; //If you don't set Object.prototype.constructor to Mime,
                                   //it will take prototype.constructor of Person (parent).
                                   //To avoid that, we set the prototype.constructor to Mime (child).


var bob = new Employee('Bob', 'Builder');
var joe = new Customer('Joe');
var rg = new Employee('Red Green', 'Handyman');
var mike = new Customer('Mike');
var mime = new Mime('Mime');

bob.greet();
// Hi, I am Bob, the Builder

joe.greet();
// Hi, I am Joe

rg.greet();
// Hi, I am Red Green, the Handyman

mike.greet();
// Hi, I am Mike

mime.greet();

仕様

仕様書
ECMAScript (ECMA-262)
Object の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
ObjectChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 3Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
Object() constructorChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 3Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
assignChrome 完全対応 45Edge 完全対応 12Firefox 完全対応 34IE 未対応 なしOpera 完全対応 32Safari 完全対応 9WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 34Opera Android 完全対応 32Safari iOS 完全対応 9Samsung Internet Android 完全対応 5.0nodejs 完全対応 4.0.0
constructorChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 8Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
createChrome 完全対応 5Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 11.6Safari 完全対応 5WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
__defineGetter__
非推奨
Chrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1
補足
完全対応 1
補足
補足 Starting with Firefox 48, this method can no longer be called at the global scope without any object. A TypeError will be thrown otherwise. Previously, the global object was used in these cases automatically, but this is no longer the case.
IE 完全対応 11Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
definePropertiesChrome 完全対応 5Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 11.6Safari 完全対応 5WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
definePropertyChrome 完全対応 5Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9
完全対応 9
部分対応 8
補足
補足 In Internet Explorer 8, this was only supported on DOM objects and with some non-standard behaviors. This was later fixed in Internet Explorer 9.
Opera 完全対応 11.6Safari 完全対応 5.1
補足
完全対応 5.1
補足
補足 Also supported in Safari 5, but not on DOM objects.
WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 6
補足
完全対応 6
補足
補足 Also supported in Safari for iOS 4.2, but not on DOM objects.
Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
__defineSetter__
非推奨
Chrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1
補足
完全対応 1
補足
補足 Starting with Firefox 48, this method can no longer be called at the global scope without any object. A TypeError will be thrown otherwise. Previously, the global object was used in these cases automatically, but this is no longer the case.
IE 完全対応 11Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
entriesChrome 完全対応 54Edge 完全対応 14Firefox 完全対応 47IE 未対応 なしOpera 完全対応 41Safari 完全対応 10.1WebView Android 完全対応 54Chrome Android 完全対応 54Firefox Android 完全対応 47Opera Android 完全対応 41Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 6.0nodejs 完全対応 7.0.0
完全対応 7.0.0
完全対応 6.5.0
無効
無効 From version 6.5.0: this feature is behind the --harmony runtime flag.
freezeChrome 完全対応 6Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 12Safari 完全対応 5.1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 6Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
fromEntriesChrome 完全対応 73Edge 完全対応 79Firefox 完全対応 63IE 未対応 なしOpera 完全対応 60Safari 完全対応 12.1WebView Android 完全対応 73Chrome Android 完全対応 73Firefox Android 完全対応 63Opera Android 未対応 なしSafari iOS 完全対応 12.2Samsung Internet Android 未対応 なしnodejs 完全対応 12.0.0
getOwnPropertyDescriptorChrome 完全対応 5Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9
完全対応 9
部分対応 8
補足
補足 In Internet Explorer 8, this was only supported on DOM objects and with some non-standard behaviors. This was later fixed in Internet Explorer 9.
Opera 完全対応 12Safari 完全対応 5WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
getOwnPropertyDescriptorsChrome 完全対応 54Edge 完全対応 15Firefox 完全対応 50IE 未対応 なしOpera 完全対応 41Safari 完全対応 10WebView Android 完全対応 54Chrome Android 完全対応 54Firefox Android 完全対応 50Opera Android 完全対応 41Safari iOS 完全対応 10Samsung Internet Android 完全対応 6.0nodejs 完全対応 7.0.0
完全対応 7.0.0
完全対応 6.5.0
無効
無効 From version 6.5.0: this feature is behind the --harmony runtime flag.
getOwnPropertyNamesChrome 完全対応 5Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 12Safari 完全対応 5WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
getOwnPropertySymbolsChrome 完全対応 38Edge 完全対応 12Firefox 完全対応 36IE 未対応 なしOpera 完全対応 25Safari 完全対応 9WebView Android 完全対応 38Chrome Android 完全対応 38Firefox Android 完全対応 36Opera Android 完全対応 25Safari iOS 完全対応 9Samsung Internet Android 完全対応 3.0nodejs 完全対応 0.12
getPrototypeOfChrome 完全対応 5Edge 完全対応 12Firefox 完全対応 3.5IE 完全対応 9Opera 完全対応 12.1Safari 完全対応 5WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12.1Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
hasOwnPropertyChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 5Safari 完全対応 3WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
isChrome 完全対応 30Edge 完全対応 12Firefox 完全対応 22IE 未対応 なしOpera 完全対応 17Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 30Firefox Android 完全対応 22Opera Android 完全対応 18Safari iOS 完全対応 9Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.10
isExtensibleChrome 完全対応 6Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 12Safari 完全対応 5.1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 6Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
isFrozenChrome 完全対応 6Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 12Safari 完全対応 5.1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 6Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
isPrototypeOfChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 9Opera 完全対応 4Safari 完全対応 3WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
isSealedChrome 完全対応 6Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 12Safari 完全対応 5.1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 6Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
keysChrome 完全対応 5Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 12Safari 完全対応 5WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 5Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
__lookupGetter__
非推奨
Chrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 11Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
__lookupSetter__
非推奨
Chrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 11Opera 完全対応 9.5Safari 完全対応 3WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
preventExtensionsChrome 完全対応 6Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 12Safari 完全対応 5.1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 6Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
propertyIsEnumerableChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 3WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
__proto__
非推奨
Chrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 11Opera 完全対応 10.5Safari 完全対応 3WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 11Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
sealChrome 完全対応 6Edge 完全対応 12Firefox 完全対応 4IE 完全対応 9Opera 完全対応 12Safari 完全対応 5.1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 12Safari iOS 完全対応 6Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
setPrototypeOfChrome 完全対応 34Edge 完全対応 12Firefox 完全対応 31IE 完全対応 11Opera 完全対応 21Safari 完全対応 9WebView Android 完全対応 37Chrome Android 完全対応 34Firefox Android 完全対応 31Opera Android 完全対応 21Safari iOS 完全対応 9Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12
toLocaleStringChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 5.5Opera 完全対応 4Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
toSource
非推奨非標準
Chrome 未対応 なしEdge 未対応 なしFirefox 未対応 1 — 74
補足
未対応 1 — 74
補足
補足 Starting in Firefox 74, toSource() is no longer available for use by web content. It is still allowed for internal and privileged code.
IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしFirefox Android 完全対応 4Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
toString()Chrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 3Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
valueOfChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 4Opera 完全対応 3Safari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Firefox Android 完全対応 4Opera Android 完全対応 10.1Safari iOS 完全対応 1Samsung Internet Android 完全対応 1.0nodejs 完全対応 あり
valuesChrome 完全対応 54Edge 完全対応 14Firefox 完全対応 47IE 未対応 なしOpera 完全対応 41Safari 完全対応 10.1WebView Android 完全対応 54Chrome Android 完全対応 54Firefox Android 完全対応 47Opera Android 完全対応 41Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 6.0nodejs 完全対応 7.0.0
完全対応 7.0.0
完全対応 6.5.0
無効
無効 From version 6.5.0: this feature is behind the --harmony runtime flag.

凡例

完全対応  
完全対応
未対応  
未対応
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非推奨。新しいウェブサイトでは使用しないでください。
非推奨。新しいウェブサイトでは使用しないでください。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報