コンストラクタ関数の定義
/* 変数 Person に無名関数を代入。 慣習的に頭文字(P)は大文字 */ var Person = function(name) { this.name = name; this.sayHello = function() { console.log('Hello, ' + this.name + '!'); } };
インスタンス(オブジェクト)の生成、プロパティの出力
var Person = function(name) { this.name = name; this.sayHello = function() { console.log('Hello, ' + this.name + '!'); } }; // インスタンスの生成 var Tom = new Person('Tom'); // プロパティの出力 console.log(Tom.name); Tom.sayHello();
実行結果
Tom
Hello, Tom!
プロトタイプ継承
var Person = function(name) { this.name = name; this.sayHello = function() { console.log('Hello, ' + this.name + '!'); } }; // 「住所」という機能を持つコンストラクタ関数を定義 var Address = function(name, address) { this.name = name; this.address = address; } // Address インスタンス生成 var address = new Address('Tom', 'Tokyo'); console.log(address.name); console.log(address.address); // Address コンストラクタに Person コンストラクタの機能を継承 Address.prototype = new Person(); var allInfo = new Address('Tom', 'Tokyo'); allInfo.sayHello();
実行結果
Tom
Tokyo
Hello, Tom!
プロトタイプにメソッドを追加
var Person = function(name) { this.name = name; this.sayHello = function() { console.log('Hello, ' + this.name + '!'); } }; // 「住所」という機能を持つコンストラクタ関数を定義 var Address = function(name, address) { this.name = name; this.address = address; } // Address コンストラクタに Person コンストラクタの機能を継承 Address.prototype = new Person(); var telInfo = new Address('Tom', 'Tokyo'); // Person コンストラクタに メソッド追加 Person.prototype.tel = function() { console.log('Telephone'); } telInfo.tel();
実行結果
Telephone