投稿日: 2012/05/26 6:20:01
オブジェクト指向言語は、二種類に大別される。JavaScriptに代表されるスクリプト系の言語は、プロトタイプベースのオブジェクト指向言語と言われ、JavaやSmalltalkなどは。クラスベースのオブジェクト指向言語と呼ばれる。
プロトタイプベースでは、既存のオブジェクトから新しいオブジェクトを生成する。クラスベースでは、クラスを定義し、それを元に、オブジェクト(インスタンス)を生成する。
関数リテラル
JavaScriptにおいて、関数の定義は、オブジェクトのメソドを定義することと同等である。
関数リテラルとは、関数を変数に代入することである。
メソドの定義:
変数 = function(...,引数,...) {
処理
}
例:
var sum = function(n) {
var toral = 0;
for (var i = 0; i <i ;i++)
total += i;
}
//
var num = prompt("数字を入力せよ:");
var res =sum(num);
alert(res);
プロパティとメソド
オブジェクトのプロパティとメソドを定義する。
プロパティは、オブジェクトの有する属性を、メソドは、オブジェクトに対する操作を示す。
プロパティの定義:
オブジェクト名.プロパティ名 = 値
メソドの定義:
オブジェクト名.メソド名 = functtion () {
処理
}
例:
// オブジェクトの定義
var Person = new Array();
// プロパティの定義
Person.name = '太郎';
Person.age = 16;
Person.mail ='taro@domain';
// メソドの定義
Person.showData = function() {
var result = '名前:' + Person.name + '\n';
result += '年齢:' + Person.age + '\n';
result += 'メール:' + Person.mail + '\n';
}
// メソドの呼出し
Person.showData();
JSON形式
JSON(JavaScript Object Notation)形式は、オブジェクトを表す。
基本形式:
{
'プロパティ名':値
}
例:
var Person = {'name':'太郎','age' :16,'mail':'taro@domain','showData':function() {
var result = '名前:' + Person.name + '\n';
result += '年齢:' + Person.age + '\n';
result += 'メール:' + Person.mail + '\n';
}
}
コンストラクタ
コンストラクタはオブジェクトを生成する。
コンストラの定義:
function オブジェクト名(...,引数,...) {
this.プロパティ名 = 初期値
·
·
this.メソド名 function(...,引数,...) {
処理
}
// 必要に応じ、メソドを記述
}
例:
// コンストラクタの定義
function Person(name,age,mail) |
this.name = name;
this.age = age;
this.mail = mail;
this.showData function() {
var result = '名前:' + this.name + '\n';
result += '年齢:' + this.age + '\n';
result += 'メール:' + this.mail + '\n';
}
}
// オブジェクトの生成
var taro = new Person('太郎',16,'taro@domain');
var hanako = new Person('花子',24,'hanako@domain');
// メソドの呼出し
taro.showData();
hanako.showData();
オブジェクトの継承
オブジェクトの継承とは、オブジェクトの有するプロパティやメソドを引き継いで、新しいオブジェクトを生成することである。
基本形式:
function 子オブジェクト名(...,引数,...) {
親オブジェクト名.call (this,...,引数,...) {
プロパティやメソドの定義
}
例:
function Person(name,age,mail) {
this.name = name;
this.age = age;
this.mail = mail;
this.showData function() {
var result = '名前:' + this.name + '\n';
result += '年齢:' + this.age + '\n';
result += 'メール:' + this.mail + '\n';
alert(result);
}
}
function Employee(name,age,mail,company,position) {
Person.call(this,name,age,mail);
this.company =company;
this.position = position;
this.showdata = function() {
var result = '名前:' + this.name + '\n';
result += '年齢:' + this.age + '\n';
result += 'メール:' + this.mail + '\n';
result += '会社:' + this.company + \n';
result += '職位:' + this.position +'\n';
alert(result);
}
}
プロトタイプ
プロトタイプ(prototype)は、オブジェクトのテンプレートとして、プロパティやメソドを定義する。
基本形:
オブジェクト名.prototype.プロパティ名 = 値| function() {}
例:
function Person(name,age,mail) {
this.name = name;
this.age = age;
this.mail = mail;
this.getName = function() {
var result = '名前:' + this.name;
}
}
// prototype
Person.prototype.setName = function(name) {
this.name = name;
}
var aPerson = new Person('noname',16,'taro@domain');
aPerson.getName();
aPerson.setName('taro');
aPerson.getName();