function getThisValue() {
	return this.value;
}
function setThisValue(value) {
	this.value = value;
}

function Foo() {
	this.value = 0;
	this.getValue = getThisValue;
	this.setValue = setThisValue;
}

var foo = new Foo();
foo.setValue(3 * 5);
alert(foo.getValue()); // 15

JavaScript では、メソッドもまた関数オブジェクトである。

JavaScript においては、メソッドはプロパティの一種であり、
オブジェクトのプロパティに関数オブジェクトを代入すると、
それはメソッドとして呼び出せるようになる。

JavaScript のメソッド呼び出しも、他のプログラミング言語同様、
オブジェクト.メソッド名(パラメータ ...) の形式である。

この場合、メソッドとして呼び出された関数のコード内では、
コンストラクタ同様、this キーワードを使うことで、
自身をメソッドとして呼び出したオブジェクトにアクセスできるので、
this 経由でそのオブジェクトを操作することができる。

上記の例では、getThisValuesetThisValue という関数を用意し、
それを Foo コンストラクタの内部で、新しいオブジェクトのプロパティに設定している。
それぞれ、getValuesetValue という名前のメソッドとなる。

getThisValue 関数は、呼び出し元オブジェクトの value プロパティを返すので、
新しいオブジェクト foo に対して、foo.getValue() と呼び出すことで、
foo の持つ value プロパティの値を取り出すことができる。

setThisValue 関数は、呼び出し元オブジェクトの value プロパティに新しい値を設定するので、
新しいオブジェクト foo に対して、foo.setValue(bar) と呼び出すことで、
foo の持つ value プロパティの値に、値 bar を設定することができる。

このようにアクセサメソッドを追加することで、
プロパティの取得や設定の際に、コードを実行することができる。

ただし、JavaScript にはアクセス修飾子は存在しないので、
依然として、foo.value という風に直接アクセスすることが可能だ。
これを防ぐためには、「アクセス方法を文書化し、遵守してもらう」しかないが、
JavaScript では、これで十分である。