Limited support 一部のブラウザのみ対応。使用時はサポート状況を確認すること。

対応ブラウザ

機能 デスクトップ モバイル
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
1
12
1
3
18
1

_defineSetter_() は Object インスタンスのメソッドで、オブジェクトのプロパティと関数を結び付け、そのプロパティを設定しようとすると呼び出されるようにします。

1
12
1
3
18
1

_lookupGetter_() は Object インスタンスのメソッドで、指定されたプロパティに結びつけられているゲッター関数を返します。

1
12
1
3
18
1

_lookupSetter_() は Object インスタンスのメソッドで、指定されたプロパティに結びつけられているセッター関数を返します。

1
12
1
3
18
1
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)
注釈 1件
実装メモ
  • Firefox 48 以降、このメソッドはグローバルスコープでオブジェクトなしで呼び出すことができなくなりました。そうしないと `TypeError` がスローされます。以前はこのような場合、自動的にグローバルオブジェクトが使用されていましたが、現在はそうではありません。
注釈 1件
実装メモ
  • Firefox 48 以降、このメソッドはグローバルスコープでオブジェクトなしで呼び出すことができなくなりました。そうしないと `TypeError` がスローされます。以前はこのような場合、自動的にグローバルオブジェクトが使用されていましたが、現在はそうではありません。

基本構文

JAVASCRIPT
const user = {
  firstName: 'Taro',
  lastName: 'Yamada',
  get fullName() {
    return `${this.lastName} ${this.firstName}`;
  },
  set fullName(value) {
    [this.lastName, this.firstName] = value.split(' ');
  }
};

user.fullName; // 'Taro Yamada'
user.fullName = 'Hanako Tanaka';

ライブデモ

フルネームの自動同期

姓と名を別々に書き換えると、getter によってフルネームが自動的に更新されます。

プレビュー全画面表示

入力値のバリデーション

setter を使って、不正な値(負の数など)がセットされるのを防ぎます。

プレビュー全画面表示

税込価格の自動計算

本体価格をセットすると、消費税(10%)を含めた価格を自動的に計算して返します。

プレビュー全画面表示

実務での使いどころ

  • Accessor methods の活用

    __defineGetter__() は Object インスタンスのメソッドで、オブジェクトのプロパティと関数を結び付け、そのプロパティが参照されるときに呼び出されるようにします。

注意点

  • 一部のブラウザでのみ対応。使用前にブラウザサポートを確認すること。

アクセシビリティ

  • JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。