Оператор instanceof
внутри, после того, как оба значения операнда собраны, использует абстрактную операцию [[HasInstance]](V)
, которая опирается на цепочку прототипов.
Шаблон, который вы разместили, состоит просто из дополнения объектов, а цепочка прототипов вообще не используется.
Если вы действительно хотите использовать оператор instanceof
, вы можете объединить другую технику Крокфорда, Prototypal Inheritance с суперконструкторами , в основном для наследования от Bicycle.prototype
, даже если это пустой объект, только обмануть instanceof
:
// helper function
var createObject = function (o) {
function F() {}
F.prototype = o;
return new F();
};
function Bicycle(tires) {
var that = createObject(Bicycle.prototype); // inherit from Bicycle.prototype
that.tires = tires; // in this case an empty object
that.toString = function () {
return 'Bicycle with ' + that.tires + ' tires.';
};
return that;
}
var bicycle1 = Bicycle(2);
bicycle1 instanceof Bicycle; // true
Более глубокая статья: