모던 웹을 위한 Javascript jQuery 책을 보면서 정리하는 내용이다.


생성자 함수는 new 키워드로 객체를 생성할 수 있는 함수를 말한다. 


1
2
3
4
5
<script>
    function Student() {
 
    }
</script>
cs


생성한 생성자 함수는 new 키워드로 객체를 생성한다.


1
2
3
4
5
6
7
<script>
    function Student() {
 
    }
 
    var student = new Student();
</script>
cs


생성자 함수는 일반적으로 대문자로 시작한다. 에러가 나는 건 아니지만 규칙으로 생각하고 대문자로 작성한다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>생성자 함수</title>
<script>
 
/*
생성자 함수
*/
 
function Student (name, korean, math, english) {
    this.이름 = name;
    this.국어 = korean;
    this.수학 = math;
    this.영어 = english;
    
    // create method
    this.getSum = function () {
        return this.국어 + this.수학 + this.영어;
    };
    
    this.getAverage = function () {
        return this.getSum() / 3;
    };
    
    this.toString = function (){
        return this.이름 + '  ' + this.getSum() + '  ' + this.getAverage();
    };
}
 
var students = [];
var output = '';
 
students.push(new Student('ㄱㄱㄱ'1009080));
students.push(new Student('ㄴㄴㄴ'909080));
students.push(new Student('ㄷㄷㄷ'809080));
students.push(new Student('ㄹㄹㄹ'709080));
students.push(new Student('ㅁㅁㅁ'609080));
 
for (var i in students) {
    output += students[i].toString() + '\n';    
}
 
alert(output);
 
</script>
</head>
<body>
 
</body>
</html>
cs



그냥 함수로 객체를 리턴하는 방법과의 차이???



Student 함수는 new로 객체를 생성하기에 생성자 함수이다. 생성자 함수로 만든 student는 객체 또는 인스턴스라고 부른다. 


생성자 함수는 왜 사용할까?


 속성은 모든 객체가 다른 값을 가지지만 메서드는 모두 같은 값을 갖는다. 각 객체를 생성할 때마다 계속 함수를 생성하면 1000개면 1000번을 생성해야 한다. 


 이러한 메모리 남비를 막기 위해 자바스크립트는 프로토타입(prototype)이란 공간이 있다. 

즉, 메서드를 하나만 생성해도 모든 객체가 해당 메서드를 쓸 수 있다. so!!! 생성자 함수로 객체를 만들 때는 생성자 함수 내부에 속성만 넣는다.


 아래와 같이 넣으라는 의미다.

1
2
3
4
5
6
7
8
9
10
/*
생성자 함수
*/
function Student (name, korean, math, english) {
    this.이름 = name;
    this.국어 = korean;
    this.수학 = math;
    this.영어 = english;
}
 
cs


 그리고 메서드는 모두 프로토타입 안에 넣는다. 프로토타입은 우리가 만드는 게 아니라 자바스크립트의 모든 함수는 변수 prototype을 갖는다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
/*
생성자 함수
*/
function Student (name, korean, math, english) {
    this.이름 = name;
    this.국어 = korean;
    this.수학 = math;
    this.영어 = english;
}
 
Student.prototype.getSum = function () {};
Student.prototype.getAverage = function () {};
Student.prototype.toString = function () {};
cs


퇴사 관련 이야기들을 모아 책으로 출판했습니다. 

아래 링크에서 전체 목차를 읽어보세요!

대기업 퇴사 이야기 전체보기 : http://www.bookk.co.kr/book/view/21659



아래 링크로 간단한 후기 링크를 남기면 배송비도 환급된다고 하니 참고해주세요.

http://www.bookk.co.kr/community/postscript

+ Recent posts