サブクラスを実体化
サブクラスを実体化
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//w3c//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD.xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta HTTP-EQUIVE="Content-Type" CONTENT="text/html;charset=utf-8" />
<title>配列にデータを追加・表示</title>
<!-- サブクラスを実体化 -->
<script src="../js/prototype.js" type="text/Javascript"></script>
<script src="../js/classmate8.js" type="text/Javascript"></script>
</head>
<body>
</body>
</html>
<!--
classmate8.js
//クラスを定義する
//この定義したクラスを抽象クラスの疑似クラスとして使用します。
Abstract.testList = function(){};
//上記クラスを実装します。
Abstract.testList.prototype = {
//配列にデータを格納する「addData」メソッドを無名関数で実装します。
addData : function( testData ){
//下の「addDataToArray」メソッドを実装しています
var objData = this.addDataToArray( testData );
//このメソッドを下の「classAddData」クラスで再定義しています。
return objData;
}
,
addDataToArray : function( testData ){}
}
//クラスを宣言します
var classData = Class.create();
//「classData」クラスを定義します。
classData.prototype = {
initialize : function( testData ){
this.testData = testData;
}
,
//登録した配列のデータを取得するメソッドです
getData : function(){
return this.testData;
}
}
//クラスを宣言します
var classAddData = Class.create();
//「classData」クラスを継承します。
classAddData.prototype = Object.extend
(
//親クラスである「Abstract.testList」を継承に使います。
new Abstract.testList
,
{
initialize : function()
{
//空の配列を「listData」に準備します。
this.listData = new Array();
}
,
//「Abstract.testList」クラスの「addDataToArray」メソッドをオーバーライドします
addDataToArray : function( testData ){
return new classData( testData );
}
}
);
//クラスを宣言します
var classArrayData = Class.create();
classArrayData.prototype =
{
initialize : function()
{
var factory = new classAddData();
this.listData = new Array(
factory.addData("データ1"),
factory.addData("データ2"),
factory.addData("データ3"),
factory.addData("データ4"),
factory.addData("データ5")
);
}
,
//表示する「dispData」メソッドを無名関数で実装します。
dispData : function(){
var html = '<div>配列データ</div><hr>';
for( var i = 0; i < this.listData.length; i++ )
{
if(i > 0)
{
//改行する
html += '<br />';
}
html += '(' +( i + 1 ) + ') ' + this.listData[i].getData();
}
document.writeln(
'<div id="array_data">' + html + '</div>' );
}
};
//配列にデータを格納するクラスをインスタンス化します。
//「initialize」でコンストラクタが実行され、
//親クラスである「Abstract.testList」の「addData」メソッドが呼ばれます。
var objData = new classArrayData();
//表示処理を実行します。
objData.dispData();
[出力結果]
配列データ
(1) データ1
(2) データ2
(3) データ3
(4) データ4
(5) データ5
--------------------------------------------------
-->
|
|