JavaScript_기본 지식으로 클래스를 정의하는 방법

WBOY
풀어 주다: 2016-05-16 16:36:19
원래의
1107명이 탐색했습니다.

원래 이렇게 썼습니다.

function Dog(){
  this.name = 'hachi';
}

Dog.prototype = {
  makeNoise:function(){
    alert('wangwangwang');
  }
};

로그인 후 복사

나중에 좀 더 복잡하고 불필요해 보이는 또 다른 글쓰기 방법을 보았습니다. ​​

function Dog(){
  var privateVariable = 'secret';

  var fn = function(){
    //...
  }

  fn.prototype = {
    makeNoise:function(){
      alert('wangwangwang');
    }
  }

  return fn;
}

로그인 후 복사

여기서 Dog 함수는 실제로 실제 Dog 클래스를 반환하는 클래스 생성 함수입니다.
나는 이 작업의 장점이 더 나은 캡슐화라고 생각합니다.
예를 들어 여기서 privateVariable은 개인 변수입니다.

var d = new Dog;
d.privateVariable //undefined
로그인 후 복사

그리고 첫 번째 예문 끝에 문장을 추가하면

Dog.prototype = {
  //e...WTF??
}
로그인 후 복사

이렇게 하면 개는 더 이상 개가 아니다~

나중에 이해하기:
위의 새 클래스 생성 방법은 프로토타입 객체를 직접 재정의합니다. 이러한 방식으로 프로토타입에 원래 내장된 속성(인수, 호출, 적용 등)이 사라집니다.
새 클래스를 만드는 다음 방법이 더 나은 것 같습니다.

var Dog = function(name){
  this.name = name;
  var privateVariable = 'you cannot see me.';
  this.getPrivate = function(){return privateVariable;};
}
로그인 후 복사

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿