2016-10-16 2 views
0

나는 Typescript의 놀이터를 찾고이 클래스 선언을 보았다 :javascript (ES5)의 클래스처럼 작동하는 함수를 항상 실행해야합니까?

var Greeter = (function() { 
    function Greeter(message) { 
     this.greeting = message; 
    } 
    Greeter.prototype.greet = function() { 
     return "Hello, " + this.greeting; 
    }; 
    return Greeter; 
}()); 

EcmaScript5 마에서 항상 를 같이 작동 기능을 실행해야합니다 :이 ES5 코드로 변환

class Greeter { 
    greeting: string; 
    constructor(message: string) { 
     this.greeting = message; 
    } 
    greet() { 
     return "Hello, " + this.greeting; 
    } 
} 

수업? 또는 protoype.greet이 초기 익명 함수 안에 있기 때문입니까? MDN에서

+1

아니요, 더 쉽게 읽을 수 있도록 프로토 타입 개체를 캡슐화하는 것이 좋습니다. 필요하면 개인 상태와 도우미를 가질 수 있습니다. – synthet1c

+0

아니요. 생성자의 프로토 타입을 사용하는 경우에도 IIFE를 전혀 사용할 필요가 없습니다. – Redu

답변

1

: ECMAScript를 6 년에 도입

자바 스크립트 클래스는 자바 스크립트의 기존 프로토 타입 기반 상속을 통해 구문 설탕입니다. 클래스 구문은 JavaScript에 새로운 객체 지향 상속 모델을 도입하지 않습니다. JavaScript 클래스는 객체를 만들고 상속을 처리하는 훨씬 간단하고 명확한 구문을 제공합니다.

그렇습니다. 항상 클래스처럼 작동하는 함수를 실행해야합니다.

+1

나는 그들이 es5 클래스를 닫는 것에 대해 이야기하고 있다고 생각한다. – synthet1c