Я хочу проверить, является ли объект экземпляром текущего класса
он отлично работает вне класса, но выдает ошибку, если я вызвал его из класса
class test {
check(obj) {
return (obj instanceof this) //error: this is not a function
}
}
const obj = new test()
console.log(obj instanceof test) //true
console.log(new test().check(obj)) //ERROR
Решение:
метод № 1: (по: @ CertainPerformance )
мы не можем использовать: вернуть obj instanceof этого,
, поскольку (это) является объектом (т. Е. Obj instanceof OBJECT),
чтобы мы могли использовать объект constractor:
return obj instanceof this.constructor
метод № 2: (по: @ Matías Fidemraizer )
return Object.getPrototypeOf(this).isPrototypeOf () //using this->better
//or: className.prototype.isPrototypeOf (obj)
//if you know the class name and there is no intent to change it later
метод № 3: (по: @ Томас )
сделать функцию "проверка" статической
static check(obj) {
// now `this` points to the right object, the class/object on which it is called,
return obj instanceof this;
}