コンストラクタ関数の定義
/* 変数 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