投稿者 tel | 2012年4月1日

JavaScriptのgetterとsetter

あるのを知らなかったのでメモ。
オブジェクトリテラルでget プロパティ名() {}、set プロパティ名(v) {} みたいな感じで書く。

var a = { get hoge() { return this._hoge; }, _hoge: 0 };
console.log(a.hoge); // 0
// getterしか定義していないので値は変わらない
a.hoge = 10;
console.log(a.hoge); // 0

既存のオブジェクトに追加する場合はdefinePropertyを使う

function Vector3() {
	this.data = new Float32Array(3);
}
Object.defineProperty(Vector3.prototype, 'x', {
	get: function() { return this.data[0]; },
	set: function(v) { this.data[0] = v; }
});
Object.defineProperty(Vector3.prototype, 'y', {
	get: function() { return this.data[1]; },
	set: function(v) { this.data[1] = v; }
});
Object.defineProperty(Vector3.prototype, 'z', {
	get: function() { return this.data[2]; },
	set: function(v) { this.data[2] = v; }
});

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。