オブジェクトの作成:
関数オブジェクトが作成されると、関数コンストラクターによって生成された関数オブジェクトは次のようなコードを実行します:
this.prototype={constructor:this};
関数 F を仮定します。 F が新しいメソッドを使用してオブジェクトを構築するとき、オブジェクトのコンストラクターはこの F.prototype.constructor に設定されます。
関数がオブジェクトを作成する前に関数のプロトタイプを変更すると、作成されたオブジェクトのコンストラクター属性
例:
関数 F(){};
F .prototype={constructor:'1111'};
var o=new F();//o.constructor==='1111' true
継承の原則:
JavaScript の継承では、コンストラクターのプロトタイプ属性で定義されたデータを共有して、あるクラスを別のクラスに継承させます。親関数のインスタンスを子関数のプロトタイプ プロパティに割り当てる必要があります。新しいインスタンス オブジェクトが作成されるたびに、オブジェクトのプライベート プロパティ __proto__ がコンストラクターのプロトタイプに自動的に接続されます。
instanceof は、インスタンス オブジェクトのプライベート プロトタイプ属性チェーンを検索して、指定されたオブジェクト
特定のインスタンス:
//instanceof は
関数 Myinstanceof(obj,type)
{ var proto=obj.__proto__;
while(proto)
{
if(proto ===type.prototype)break;
proto=proto.__proto__; >return proto!=null;
}
function View(){}
function TreeView(){}
TreeView.prototype=new View();//TreeView.prototype.__proto__=TreeView .prototype 自動補完
TreeView.prototype .constructor=TreeView;//修正コンストラクター
var view=new TreeView();//view.__proto__=TreeView.prototype 自動補完
alert(view instanceof View) ; // true は view.__proto__ を検出します。
alert(view instanceof TreeView) は __proto__ が検出された場合に検出されます。 // true は view.__proto__ が検出された場合に検出されます。
alert(Myinstanceof(view,View)) / /true
alert(Myinstanceof(view, TreeView)); //true
上記のカスタマイズされた Myinstanceof は、IE カーネル インスタンス ストレージ プロトタイプではないため、自分で実装したものです。 __proto__、Myinstanceofは通らない、その他のブラウザは問題ないはずです