/**
* 疑似クラス getter, setter型
*
* @version 1.0.1
* @author think49
* @url http://v...content-available-to-author-only...a.com/notebooks/javascript/Class_prototype_private-variable.html
*/
/**
* ベースとなるスーパークラス (親クラス)
*/
function Base (name) { // 仮引数 name はプライベート変数となる
this.getName = function getName () { // プライベートメソッド
return name;
};
this.setName = function setName (inputName) { // プライベートメソッド
name = String(inputName);
};
}
/**
* サブクラス1 (子クラス1)
*/
function Sub1 (message) { // 仮引数 message はプライベート変数となる
this.getMessage = function getMessage () { // プライベートメソッド
return message;
};
this.setMessage = function setMessage (inputMessage) { // プライベートメソッド
message = String(inputMessage);
};
}
Sub1.prototype = new Base('myName1-1'); // Base を継承する
/**
* サブクラス2 (子クラス2)
*/
function Sub2 (message) { // 仮引数 message はプライベート変数となる
this.getMessage = function getMessage () { // プライベートメソッド
return message;
};
this.setMessage = function setMessage (inputMessage) { // プライベートメソッド
message = String(inputMessage);
};
}
Sub2.prototype = new Base('myName1-2'); // Base を継承する
/**
* 出力
*/
function output (name, value) {
print(String(name) + ': ' + String(value));
}
/**
* 検証
*/
function test () {
var base, sub1, sub2;
base = new Base('myName1');
output('base.name', base.name); // undefined
output('base.getName()', base.getName()); // "myName1"
output('base.hasOwnProperty("getName")', base.hasOwnProperty('getName')); // true
print('');
sub1 = new Sub1('myMessage1-1');
sub2 = new Sub2('myMessage1-2');
output('sub1.getMessage()', sub1.getMessage()); // "myMessage1-1"
output('sub2.getMessage()', sub2.getMessage()); // "myMessage1-2"
sub1.setMessage('myMessage2-1');
sub2.setMessage('myMessage2-2');
output('sub1.getMessage()', sub1.getMessage()); // "myMessage2-1"
output('sub2.getMessage()', sub2.getMessage()); // "myMessage2-2"
output('sub1.hasOwnProperty("getMessage")', sub1.hasOwnProperty('getMessage')); // true
output('sub2.hasOwnProperty("getMessage")', sub2.hasOwnProperty('getMessage')); // true
print('');
output('sub1.name', sub1.name); // undefined
output('sub2.name', sub2.name); // undefined
output('sub1.getName()', sub1.getName()); // "myName1-1"
output('sub2.getName()', sub2.getName()); // "myName1-2"
sub1.setName('myName2-1');
sub2.setName('myName2-2');
output('sub1.getName()', sub1.getName()); // "myName2-1"
output('sub2.getName()', sub2.getName()); // "myName2-2"
output('sub1.hasOwnProperty("getName")', sub1.hasOwnProperty('getName')); // false
output('sub2.hasOwnProperty("getName")', sub2.hasOwnProperty('getName')); // false
}
test();