.prototype
Object.prototypeプロパティは、そのオブジェクトのプロトタイプオブジェクトを表します。
説明
JavaScriptの全てのオブジェクトは、Objectの子孫です。
全てのオブジェクトは、メソッドとプロパティをObject.prototype
から継承しますが、上書きされているかもしれません。
(Object.create(null)
のような、null
のprototypeを使用するObject
を除く。)
例えば、他のコンストラクタのprototypeが、constructor
プロパティを上書きし、
それ自身のオリジナルのtoString()メソッドを提供します。
Object
のprototypeオブジェクトの変更は、プロトタイプチェーンを伝って、
それらのプロパティとメソッドの変更を上書きされていなければ、プロパティとメソッドの全てのオブジェクトに伝搬します。
プロパティ
メソッド
例
JavaScriptには実際にはサブクラスオブジェクトが無いため、 prototypeはオブジェクトとして振る舞う特定の関数の"ベースクラス"オブジェクトを作成するワークアラウンドとして便利です。 例えば、
var Person = function() {
this.canTalk = true;
this.greet = function() {
if (this.canTalk) {
console.log("Hi, I'm " + this.name);
}
};
};
var Employee = function(name, title) {
this.name = name;
this.title = title;
this.greet = function() {
if (this.canTalk) {
console.log("Hi, I'm " + this.name + ", the " + this.title);
}
};
};
Employee.prototype = new Person();
var Customer = function(name) {
this.name = name;
};
Customer.prototype = new Person();
var Mime = function(name) {
this.name = name;
this.canTalk = false;
};
Mime.prototype = new Person();
var bob = new Employee('Bob','Builder');
var joe = new Customer('Joe');
var rg = new Employee('Red Green','Handyman');
var mike = new Customer('Mike');
var mime = new Mime('Mime');
bob.greet();
joe.greet();
rg.greet();
mike.greet();
mime.greet();
これは下記のように出力されます。
Hi, I'm Bob, the Builder
Hi, I'm Joe
Hi, I'm Red Green, the Handyman
Hi, I'm Mike
仕様
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ |
機能 | Android | Chrome for Android |
Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。