のinstanceof私は最近、自分のためにプロトタイプを発見した、との事を考え出すといくつかの助けを得るために幸せになる:はJavaScript:オペレータの予期しない結果
コード例1:
"use strict";
var Car = function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
return obj;
};
Car.prototype.move = function() {
this.loc++;
return this.loc;
};
var bmw = Car(6);
console.log(bmw instanceof Car);
コード例2を:
"use strict";
var Car = {
"makeCar": function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
return obj;
},
"prototype": {
"move": function() {
this.loc++;
return this.loc;
}
}
};
var bmw = Car.makeCar(6);
console.log(bmw instanceof Car.makeCar);
私は例2を書いたので、カーオブジェクトのメソッドをオブジェクト自体の中に残したいからです。私はそれが完了できるかどうかはわかりませんが、 "instanceof"演算子を除いてこれまでのところ動作しています。
最初の例では「true」と記録されますが、2番目に「false」と記録されます。どこが間違っているのかわからないので、お手数ですが、ありがとうございます。
Car.makeCarは_Car_オブジェクトではありません。 – vlaz
'instanceof'は、オブジェクトのプロトタイプチェーンにコンストラクタのプロトタイプが含まれているかどうかをテストします。 'bmw'のプロトタイプチェーンは' Car.makeCar'ではなく 'Car'を含んでいます。 – Barmar
'Car.prototype'から継承するインスタンスをまだ作成しているので、' bmw instanceof Car'はまだ動作します – Bergi