31 lines
613 B
JavaScript

var foo = {};
foo[Symbol.hasInstance]= function () { return true; };
var bar = {};
expect(bar instanceof foo).toBe(true);
var qux = {};
qux[Symbol.hasInstance]= function () { return NaN };
expect(bar instanceof qux).toBe(false);
expect(new String).toBeInstanceOf(String);
//
function Greeting(greeting) {
this.greeting = greeting;
}
Object.defineProperty(Greeting, Symbol.hasInstance, {
value: function(inst) {
return inst.greeting == "hello";
}
});
var a = new Greeting("hello");
var b = new Greeting("world");
expect(a).toBeInstanceOf(Greeting);
expect(b instanceof Greeting).not.toBe(true);