// Case A
function Constructor() {
this.foo = function() {
...
};
...
}
// vs
// Case B
function Constructor() {
...
};
Constructor.prototype.foo = function() {
...
}
사람들이 프로토 타입의 사용을 조언하는 주된 이유 중 하나는 다른 접근법을 사용할 때 this.foo
가 여러 번 만들어지는 프로토 타입의 경우 .foo
이 한 번 만들어지는 것입니다.함수를 만드는 것은 더 많은 메모리를 소비합니까?
그러나 통역사가이를 최적화 할 것으로 기대합니다. 따라서 foo
foo
함수의 복사본은 하나뿐입니다. 물론 클로저 때문에 각 개체에 대해 고유 한 범위 컨텍스트를 유지할 수 있지만 각 개체에 대한 오버 헤드가 적고 오버 헤드가 적습니다.
현대 JS 해석기는 사례 A를 최적화하여 foo
함수 하나만 복사합니까?
"better"와 "modern interpreters"를 정의하는 몇 가지 참조가있을 수 있습니까 – Raynos
테스트 결과는 제가 발견 한 것과 일치합니다. 또한 함수 내에 큰 코드 블록을 추가하여 테스트를 수행했는지 테스트합니다. 메모리 풍선이 더 빨리 - 그리고 그것은하지 않았다 ... 함수 안의 코드는 여분의 메모리를 필요로하지 않는다. – gnarf
오 - 그리고 또한 개체가 생성되기 전에 diff를 측정하기 위해 테스트 전후의 메모리 사용량을 로그 아웃했습니다. – gnarf