예 :
function A(){}
function B(){}
B.prototype = new A();
클래스 B가 클래스 A를 상속하는지 어떻게 확인할 수 있습니까?
답변:
다음을 시도하십시오.
ChildClass.prototype instanceof ParentClass
A.prototype
. ... developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
2017 년으로 돌아 가기 :
그것이 당신에게 효과가 있는지 확인하십시오
ParentClass.isPrototypeOf(ChildClass)
개는 : 참고 instanceof
여러 실행 컨텍스트 / 창을 사용하는 경우 예상대로되지 작업을 수행합니다. §§을 참조하십시오 .
또한 https://johnresig.com/blog/objectgetprototypeof/에 따라 다음과 동일한 대체 구현입니다 instanceof
.
function f(_, C) { // instanceof Polyfill
while (_ != null) {
if (_ == C.prototype)
return true;
_ = _.__proto__;
}
return false;
}
클래스를 직접 확인하도록 수정하면 다음과 같은 이점이 있습니다.
function f(ChildClass, ParentClass) {
_ = ChildClass.prototype;
while (_ != null) {
if (_ == C.prototype)
return true;
_ = _.__proto__;
}
return false;
}
instanceof
경우에 자체 검사 obj.proto
이고 f.prototype
, 따라서 :
function A(){};
A.prototype = Array.prototype;
[]instanceof Array // true
과:
function A(){}
_ = new A();
// then change prototype:
A.prototype = [];
/*false:*/ _ instanceof A
// then change back:
A.prototype = _.__proto__
_ instanceof A //true
과:
function A(){}; function B(){};
B.prototype=Object.prototype;
/*true:*/ new A()instanceof B
같지 않으면 proto는 수표에서 proto의 proto로 바뀐 다음 proto의 proto로 바뀝니다. 그러므로:
function A(){}; _ = new A()
_.__proto__.__proto__ = Array.prototype
g instanceof Array //true
과:
function A(){}
A.prototype.__proto__ = Array.prototype
g instanceof Array //true
과:
f=()=>{};
f.prototype=Element.prototype
document.documentElement instanceof f //true
document.documentElement.__proto__.__proto__=[];
document.documentElement instanceof f //false
class
?class A extends B{}
그런 다음 클래스의 상속을 어떻게 확인할 수A