.prototype.isPrototypeOf()
オブジェクトが、別のオブジェクトのプロトタイプ(prototype)チェーンであるかを調べます。
注意: isPrototypeOfは、instanceof演算子とは異なります。
"object instanceof AFunction
"の式では、
オブジェクトのプロトタイプチェーンは、AFunction自身に対してでは無く、
AFunction.prototype
に対して確認されます。
文法
prototypeObj.isPrototypeOf(obj)
prototypeObj
は、引数のオブジェクトのプロトタイプチェーン内の各リンクに対して、検証を行うオブジェクトです。
引数 | 説明 |
---|---|
object | このオブジェクトのプロトタイプチェーンが検索されます。 |
説明
isPrototypeOf
メソッドは、オブジェクトが別のプロトタイプチェーン内のものであるか否かを調べます。
下記のプロトタイプチェーンを例に考えてみましょう。
function Fee() {
// . . .
}
function Fi() {
// . . .
}
Fi.prototype = new Fee();
function Fo() {
// . . .
}
Fo.prototype = new Fi();
function Fum() {
// . . .
}
Fum.prototype = new Fo();
この処理の後に、Fumをインスタンス化し、 FumのプロトタイプチェーンにFiのプロトタイプ(prototype)が存在するのかを確認するであれば、 下記のようにします。
var fum = new Fum();
. . .
if (Fi.prototype.isPrototypeOf(fum)) {
// Fiからプロトタイプチェーンされたものであるという保証付きで、
// 安全に処理を行うことが出来ます。
}
これに加え、instanceof演算子はとりわけ手軽に扱えるもので、 特定のプロトタイプチェーンからの子孫オブジェクトを扱う場合にのみ動作する事が出来るコードがあるとすると、 その特定のメソッドまたはプロパティが、そのオブジェクト上で提供されることを保証することが出来ます。
仕様
ブラウザ互換性
機能 | 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の更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。