.prototype

Object.prototypeプロパティは、そのオブジェクトのプロトタイプオブジェクトを表します。

説明

JavaScriptの全てのオブジェクトは、Objectの子孫です。 全てのオブジェクトは、メソッドとプロパティをObject.prototypeから継承しますが、上書きされているかもしれません。 (Object.create(null)のような、nullのprototypeを使用するObjectを除く。) 例えば、他のコンストラクタのprototypeが、constructorプロパティを上書きし、 それ自身のオリジナルのtoString()メソッドを提供します。 Objectのprototypeオブジェクトの変更は、プロトタイプチェーンを伝って、 それらのプロパティとメソッドの変更を上書きされていなければ、プロパティとメソッドの全てのオブジェクトに伝搬します。

プロパティ

prototype.constructor
オブジェクトのprototypeを生成する関数を指し示します。

メソッド

prototype.hasOwnProperty()
指定されたプロパティが、そのオブジェクトの直接のプロパティで、 プロトタイプチェーンを通して継承されていないものであるか否かを真偽値を返します。
prototype.isPrototypeOf()
指定されたオブジェクトが、その呼び出しされたオブジェクトのプロトタイプチェーン内のものであるか否かを真偽値を返します。
prototype.propertyIsEnumerable()
内部で、ECMAScript DontEnum 属性が設定されているかの真偽値を返します。
prototype.toLocaleString()
toString()を呼び出します。
prototype.toString()
オブジェクトを表す文字列を返します。
prototype.valueOf()
指定されたオブジェクトのプリミティブ値を返します。

例

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
基本 ◯ ◯ ◯ ◯ ◯ ◯

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。