職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

Javascriptの超入門編24--ユーザ定義オブジェクト

2018年11月03日 | JavaScript
ユーザ定義オブジェクトの作成方法


【開発環境】
OS;Window10
Webブラウザ:Google Chrome
テキストエディタ:Brackets

■オリジナルのコンストラクタを定義するには
今まで、オブジェクトのインスタンスを生成するときは、コンストラクタを使ってきた。
注意)
Javascriptのコンストラクタは、オブジェクト名と同じ名前の関数。ただし、普通の関数とは異なり、return文で値を戻す事はしない。

コンストラクタの主な役割は、自分自身を表すthisを使って、「this.プパティ名=引数」という形式でプパティを設定する。
また、プパティに関数を代入すれば、メソッドを定義することも出来る。
new演算子とコントラクトを利用してインスタンスを生成すると、プロパティにアクセスしたり、メソッドを実行したりできます。


1)コンストラクタを用意する
リテラル形式の用意されてないオブジェクトの場合→インスタンスの生成は、new演算子コンストラクタを使用して行う。

例文
var now = new Date();

2)コンストラクタ用の関数の仕組み
ユーザ定義オブジェクトを定義する場合→インスタンスを生成して初期化を行う為のオリジナルのコンストラクタを用意する必要があります。

コンストラクタの内部では、必要に応じてプロパティ(インスタンス変数)を設定する。初期化が必要なプロパティをコンストラクタの引数に渡し、内部で、次のようにプロパティに代入します。

書式
this.プロパティ名 = 引数;

■Customerコンストラクタを定義してみる。
<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="utf-8">
<title>JavaScriptのテスト</title>
</head>

<body>

<script>
// コンストラクタ
function Customer(num, name){
// プロパティ
this.number = num;
this.name = name;
}
//インスタンスc1の生成
var c1 = new Customer(1, "桜田一郎");
//コンソール表示
console.log(c1.number + ": ", c1.name);
//インスタンスc2の生成
var c2 = new Customer(2, "山田花子");
//numberプロパティを変更
c2["number"] = 3;
//コンソール表示
console.log(c2["number"] + ": ", c2["name"]);
</script>

</body>
</html>
※プロパティのアクセスには二通りある。
c2["number"] = 3;or c2.number = 3;
■表示結果


コンストラクタを使ってメソッドを追加する
・プログラムリスト
<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="utf-8">
<title>JavaScriptのテスト</title>
</head>

<body>
<script>
 function Customer(num, name) {
 // プロパティ
 this.number = num;
 this.name = name;

 // メソッド関数
 this.showInfo = function(){
 console.log("番号:", this.number,
  " 名前:", this.name);
 };
}

 var c1 = new Customer(1, "桜田一郎");←インスタンス
 c1.showInfo();←メソッド

 var c2 = new Customer(2, "山田花子");←インスタンス
 c2.showInfo();←メソッド
</script>
</body>

</html>
実行


・弱点
インスタンスごとにプロパティやメソッドが用意されるため、メソッド関数のサイズが大きかったり、多数のインスタンスを生成したりする場合は、無駄が多くなる。

■プロパティやメソッドを動的に追加する
・プログラムリスト
<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="utf-8">
<title>JavaScriptのテスト</title>
</head>

<body>
<script>
function Customer(num, name) {
// プロパティ
this.number = num;
this.name = name;

// メソッド
this.showInfo = function () {
 console.log("番号:", this.number,
 " 名前:", this.name);
 };
}

var c1 = new Customer(1, "桜田一郎");
 // プロパティを追加
 c1.age = 25;
 // メソッドを追加
 c1.showAge = function () {
console.log(this.name + "は" + this.age + "才です");
  };

 // 追加したメソッドを呼び出す
 c1.showAge();

 var c2 = new Customer(2, "山田花子");
 // c2.showAge();//を外すとエラーに成る
</script>
</body>

</html>
・実行

コメント (1)    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Javascriptの超入門編23--タ... | トップ | Javascriptの超入門編25--プ... »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
すごい・・・ (くりる)
2018-11-05 21:41:16
今日からブログ村に入ったくりるです。
分かりやすいし見やすく、とても好きになりました!!
これからも頑張ってください。
とても参考になりました!

コメントを投稿

JavaScript」カテゴリの最新記事