libro
www.tuyano.com
初心者のためのJavaScriptプログラミング入門

JavaScriptのオブジェクト指向 (7/7)

作成:2010-04-03 09:45
更新:2010-05-11 17:18

■プロパティ・メソッドのアクセス制限

多くのオブジェクト指向言語では、プロパティやメソッドに「アクセス制限」を設けることができます。外部から自由にアクセスできるパブリックなものと、外部からは利用できず、オブジェクト内でのみ使えるプライベートなもの。そうしたアクセス可能な範囲の設定ができると、ずいぶんと便利です。「これは、勝手に操作されちゃ困る」といったプロパティなどがあった場合、JavaScriptではどうすればいいのでしょう。

この答えは、意外に単純なところにあります。JavaScriptでは、オブジェクトに設定されたプロパティやメソッドは、基本的にすべて外部から利用可能です。では、利用できないようにしたい場合は? 簡単です、「プロパティやメソッドにしなければいい」のです。

JavaScriptでは、オブジェクトはコンストラクタという関数として定義されます。そして関数では、プロパティやメソッドの他に、普通の変数や関数も組み込むことができます。こうした「関数内に用意した普通の変数や関数」は、外部からは利用できません。

○サンプルスクリプト○

下のリストに、簡単な利用例をあげておきます。ここでは、MyDataObjectに用意される値のうち、nameだけを「外部から利用不可」なものにしています。またこのnameを利用するために「setName」「getName」という機能を用意していますが、これらも外部からは一切呼び出せず、内部でのみ使えるようにしてあります。

スクリプトでは、別に難しいことや新しいことなど何も使ってはいません。今までの知識で十分理解できるものですね。これで、外部から利用できないプライベートなプロパティやメソッドが作れるのです。

既に他のプログラミング言語を使ったことがあって、オブジェクト指向の考え方を知っている人が、新たにJavaScriptを学ぼうとすると、つい「他の言語で覚えたオブジェクト指向の考え方をJavaScriptに当てはめて理解しようとする」という悪い習慣に染まってしまいます。JavaScriptのオブジェクト指向は、他の言語(JavaやC#やRubyなどといったもの)とはまったく違う考え方に基づいているのです。そこのところをよく理解してください。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<script type="text/javascript">
<!--
function MyDataObject(name,age,mail){
	var name = name;
	this.age = age;
	this.mail = mail;
	
	function setName(str){
		name = str;
	}
	
	function getName(){
		return name;
	}
	this.showData = function(){
		var result = '名前:' + getName() + '\n';
		result += '年齢:' + this.age + '歳\n';
		result += 'メール:' + this.mail;
		alert(result);
	}
}

var obj1 = new MyDataObject('山田太郎',18,'taro@yamada');
obj1.showData();
//-->
</script>
※関連コンテンツ

「初心者のためのJavaScriptプログラミング入門」に戻る