JavaScript 객체의 생성자


답변:


408

프로토 타입 사용 :

function Box(color) // Constructor
{
    this.color = color;
}

Box.prototype.getColor = function()
{
    return this.color;
};

"색상"숨기기 (개인 멤버 변수와 비슷 함) :

function Box(col)
{
   var color = col;

   this.getColor = function()
   {
       return color;
   };
}

용법:

var blueBox = new Box("blue");
alert(blueBox.getColor()); // will alert blue

var greenBox = new Box("green");
alert(greenBox.getColor()); // will alert green

3
@BorisB, 그렇습니다-Box 객체의 색상과 getColor를 정의합니다. 그렇지 않으면 일반적인 범위에서 변수를 할당합니다.
Nick

4
@Jeach 예, 그렇습니다. 숨길 수있는 대체 스 니펫을 제공했습니다 color. 나는 당신이 어느 것을 사용 하느냐가 개인적 선호 (보호와 단순성)에 크게 좌우된다고 제안합니다
Nick

6
@CamiloMartin 항상 필요한 것은 아니지만 변수 "private"(또는이 경우 이름을 지정할 수 없음)을 만드는 것은 외부 코드가 클래스의 구현 세부 정보에 종속되지 않도록하는 유용한 방법이 될 수 있습니다. 클래스의 어떤 요소가 공개 / 비공개인지 표시 만 외부 사용자에게 유용 할 수 있습니다.
Nick

49
var개인 변수를 만듭니다. this공개 변수를 만듭니다
EhevuTov

3
@AlanKis (적어도 일부 자바 스크립트 엔진에서는) 스택 추적은 익명 함수의 경우 언급조차하지 않지만 Foo후자의 경우 Foo호출되고 있음을 알 수 있습니다 . 디버깅에 매우 유용합니다.
Joachim Isaksson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.