0
JS에서 생성자 함수를 사용하여 새 객체를 만들고 프로토 타입 객체에 액세스하면 프로토 타입에있는 모든 속성을 볼 수 있습니다. (훨씬 더 명확한 코드에서) :노드 : "Class"구문을 사용하는 프로토 타입이 예상 객체를 표시하지 않습니다.
function F() {
this.attr = 42;
}
F.prototype.foo = function() {
return 'life';
}
$> let f = new F();
undefined
$> f
F { attr: 42 }
$> Object.getPrototypeOf(f)
F { foo: [Function] }
바로 여기 모두가 정상입니다.
는 지금, 나는C {}
을 결과하는 것은 나를 혼란이라는 동일한 시나리오
class C {
constructor() {
this.attr = 42;
}
foo() {
return 'life';
}
}
$> let c = new C()
undefined
$> c
C { attr: 42 }
$> Object.getPrototypeOf(o)
C {}
을 만들기 위해 클래스 구문을 사용하겠습니다. 내 foo
속성은 어디에 있습니까?c
개체에 없지만 내 C
프로토 타입에없는 것 같습니다!
Chrome Dev Tools에서 코드를 실행했는데 객체를 확장 한 후'foo'가 표시됩니다. 'Object.getPrototypeOf (o) .foo'를 실행하여 그 객체에'foo'가 존재 함을 증명할 수도 있습니다. 귀하의 환경은 바로 그것을 표시하지 않습니다. –
@MikeC 내 env가 노드 콘솔 – Manu
그래서 클래스 전용 프로토 타입을 표시 할 때 Node는 프로토 타입의 모든 요소를 표시하지 않습니다. 속성이 여전히 존재합니다. –