내 원래 작문 스타일은 다음과 같습니다.
function dog () {this.name = 'hachi';} dog.prototype = {makenoise : function () {alert ( 'wangwangwang'); }};나중에 나는 또 다른 더 복잡하고 겉보기에 불필요한 글쓰기 방법을 보았다.
기능 개 () {var privatevariable = 'Secret'; var fn = function () {// ...} fn.prototype = {makenoise : function () {alert ( 'wangwangwang'); }} return fn;}여기서 개 기능은 실제로 실제 개 클래스를 반환하는 클래스를 제조하는 기능입니다.
이 작업의 이점은 포장을 더 잘 구현하는 것이라고 생각합니다.
예를 들어, 개인 변수는 개인 변수입니다.
var d = new Dog; D.PrivateVariable // 정의되지 않았습니다
또한 첫 번째 예의 끝에 문장을 추가하면 다음과 같습니다.
dog.prototype = {//e...wtf ??}개는 이런 식으로 개가 아닙니다
나중에 이해 :
새 클래스를 생성하는 위의 방법은 프로토 타입 객체를 직접 재 작성합니다. 이러한 방식으로 프로토 타입의 내장 속성이 사라집니다 (인수, 호출, 적용 등).
새로운 클래스를 만드는 다음과 같은 방법이 더 나은 것 같습니다.
var dog = function (name) {this.name = 이름; var privatevariable = '당신은 나를 볼 수 없습니다.'; this.getPrivate = function () {return privateVariable;};}