Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
プロパティアクセサーはオブジェクトのプロパティへのアクセスを提供するもので、ドット記法またはブラケット記法を使用します。
オブジェクトは実際には連想配列(別名 map、 dictionary、 hash、 lookup table)とみなすことができます。この配列におけるキーはオブジェクトのプロパティの名前です。
プロパティにアクセスするには、ドット記法とブラケット記法の 2 通りがあります。
object.propertyName の構文では、 propertyName は有効な JavaScript の 識別子でなければならず、予約語であっても構いません。例えば、 object.$1 は有効であるのに対し、 object.1 は有効ではありません。
ここで、 createElement というメソッドを document から取得し、呼び出します。
数値リテラルに対してメソッドを使用する場合で、その数値リテラルに指数や小数点がない場合、メソッド呼び出しをするドットの前にホワイトスペースを入れることで、ドットが小数点とみなされることを防ぐことができます。
さらに、プライベート要素は、それを定義するクラス内でドット記法を使用してのみアクセスすることができます。
object[expression] の構文では、expression は文字列またはシンボルです。ですから、これは任意の文字列、例えば '1foo'、'!bar!'、または ' ' (空白) であっても構いません。
これは前の例とまったく同じです。
ブラケット記法の前には空白を入れることができます。
プロパティ名として評価される式を渡すと、プロパティ名を直に直接渡すのと同じことが行われます。
ただし、外部入力で指定された名前のプロパティにアクセスするために角括弧を使用することには注意が必要です。これにより、コードがオブジェクトインジェクション攻撃を許しやすくなる可能性があります。
プロパティ名は文字列またはシンボルです。それ以外の値は、数値を含めて、文字列へ強制変換されます。これは 'value' を出力します。 1 が '1' に強制変換されるからです。
こちらも 'value' を出力します。foo と bar は同じ文字列に変換されるからです。
オブジェクトのプロパティについて話す場合は、プロパティとメソッドを区別するのが一般的です。しかし、プロパティとメソッドの区別は、単なる慣習にすぎません。メソッドは、呼び出すことができるプロパティです(例えば、Function インスタンスへの参照を値として保有している場合など)。
メソッドは、そのメソッドが所属するオブジェクトにバインドされているわけではありません。特に、 this はメソッド内で固定されているわけではなく、必ずしもそのメソッドを含んでいるオブジェクトを参照しているとは限りません。 this は関数呼び出し時に「渡される」ものです。this のリファレンスを参照してください。
JavaScript 初心者はしばしば、代わりにブラケット記法を使えるところで eval() を使用してしまう間違いを犯します。
例えば、以下のような構文がたくさんのスクリプトで見られます。
eval() は低速であり、可能な限り避けるべきです。また、 strFormControl は ID を必要としますが、フォームコントロールの名前と id は必須ではありません。代わりにブラケット記法を使った方が良いでしょう。
| ECMAScript® 2027 Language Specification # sec-property-accessors |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年9月11日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.