class MyClass {
method (){
.... какойто код...
this.secondMethod()
}
secondMethod(){
.... какойто код....
}
}
class MyClass {
method (){
.... какойто код...
if ( this.hasownproperty("secondMethod")) { // не работает
this["secondMethod"]()
}
}
secondMethod(){
.... какойто код....
}
}
class MyClass {
method() {
console.clear();
console.log(Reflect.has(this, 'secondMethod')) // true
console.log(this.hasOwnProperty('secondMethod')); // false
console.log('secondMethod' in this) // true
console.log(this.secondMethod !== undefined) // true
}
secondMethod() {
}
}
let myClass = new MyClass();
myClass.method();
class MyClass {
method1 () { alert(1) }
method2 () { alert(2) }
}
const obj = new MyClass
obj.method3 = () => { alert(3) }
console.log(obj.hasOwnProperty('method2'))
// false, потому что это свойство родителя, не собственное
console.log(obj.hasOwnProperty('method3'))
// true, потому что это свойство не унаследовано а добавлено непосредственно к объекту
console.log(Boolean(obj.__proto__.method2))
// true, проверяется в наследованном от непосредственного родителя прототипе
console.log(Boolean(obj.method2))
// true, проверяется во всей цепочке прототипов, при длинной цепочке наследования может быть неоправданно затратной операцией