기본적으로 세 개의 숫자 값을 포함 할 수있는 Vector 클래스를 만들고 있습니다. 그러나 이러한 벡터에서 많은 작업을 수행 할 수 있습니다. 크기를 늘리거나 다른 벡터를 더하거나 뺍니다.프로토 타입을 사용해야합니까?
이 함수를 Vector 클래스의 프로토 타입 함수로 코딩해야하는지 아니면 생성자에서 정의해야하는지 궁금합니다.
이러한 두 가지 방법 중 어느 것이 더 낫습니까? 당신이 프로토 타입이 작동하지 않을 것 "개인"변수로 X, Y, Z를 추적 할 경우
function Vector3D(x, y, z) {
this.x = x;
this.y = y
this.z = z;
}
Vector3D.prototype.magnitude = function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
};
또는
function Vector3D(x, y, z) {
this.x = x;
this.y = y;
this.z = z;
this.magnitude = function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
};
}
감사합니다. x, y 및 z도 Vector3D의 인스턴스에서 추출 할 수 있어야하므로 공개되어야합니다. 이 경우 프로토 타입이 최선의 선택일까요? – pimvdb
정답은 +1이지만 js의 private 항목은 pipedream이므로 프로토 타입을 선호합니다. 일반적으로 코드를 테스트 할 때 단위 테스트를 어렵게 만듭니다 .- 누가 자신을 제외하고 물건을 숨기고 있습니까? –
동의합니다. 따라서 여러분은 공용 변수 만 가질 수 있습니다. Google 크롬의 개발자 도구에서 함수는 생성자를 통과해도 멤버로 표시되지만 프로토 타입에 '숨겨져 있고 x, y 및 z 만 표시된다면 더 실용적입니다. – pimvdb