Class/Object 선언 방법.
리터럴 방식 Object 생성
var Person = {
firstName : "Micheal",
lastName : "Jackson",
getFullName : function() {
return this.firstName + ' ' + this.lastName;
}
}
Person.getFullName();
함수 방식 클래스 선언
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.getFullName = function() {
return this.firstName + ' ' + this.lastName;
}
}
var p1 = new Person("Micheal", "Jackson");
p1.getFullName();
함수 + 프로토타입(prototype) 방식 (※ 일반적인 클래스 선언 방법)
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Person.prototype.getFullName = function() {
return this.firstName + ' ' + this.lastName;
}
var p1 = new Person("Micheal", "Jackson");
p1.getFullName();
즉시실행함수(IIFE) + 함수 + 프로토타입(prototype) 방식
var Person = (function () {
function PersonA(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
PersonA.prototype.getFullName = function () {
return this.firstName + ' ' + this.lastName;
};
return PersonA;
}());
var p1 = new Person("Micheal", "Jackson");
p1.getFullName();
즉시실행함수(IIFE) + 내부 속성/함수 숨기기
var Person = (function() {
"use strict";
var $this = {};
$this.init = function(firstName, lastName) {
$this.firstName = firstName;
$this.lastName = lastName;
}
$this.getFullName = function () {
return $this.firstName + ' ' + $this.lastName;
};
$this.privateFunction = function() {
// ...
}
return {
init: $this.init,
getFullName: $this.getFullName
}
})();
Person.init("Micheal", "Jackson");
Person.getFullName();