7. 사용자 객체 만들기


new Object()로 객체 만들기


* 사용자 객체 만들기

new Object()로 프로퍼티가 없는 빈 객체를 만들고 프로퍼티와 메소드를 추가하여 객체를 완성한다.

프로퍼티 추가 시 이름과 함께 값을 줘야한다.

ex)

var account = new Object();

account.owner = "황기태"; // 프로퍼티 owner 생성 및 초기화

account.code = "111"; // 프로퍼티 code 생성 및 초기화

account.balance = 35000; // 프로퍼티 balance 생성 및 초기화


* 사용자 객체의 프로퍼티 사용

ex)

var name = account["owner"]; // name = "황기태"

account["balance"] = 10000; // balance 프로퍼티에 값 10000 저장. 잔금 10000원

account.blalance += 20000; // balance 프로퍼티에 20000 더하기. 잔금 30000원


* 사용자 객체에 메소드 만들기

ex)

function deposit(money) // 메소드로 사용할 함수 작성

{

this.balance += money; // 객체(this)의 프로퍼티 balance에 money 더하기

}

account.deposit = deposit; // 메소드 deposit(money) 만들기 완성


account.deposit(1000); // deposit(1000)이 실행된다.


* this

앞의 deposit() 함수에서 this는 이 객체를 뜻하며, this.balance는 이 객체의 balance 프로퍼티를 뜻한다

만일 this 없이 balance라고만 쓰면 이것은 전역 변수나 지역 변수 balance를 접근하는 것이다.

그러므로 객체의 멤버 변수인 프로퍼티를 접근할 때는 반드시 this를 사용해야 한다.


예제 7-9. new Object()로 계좌를 표현하는 account 객체 만들기

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
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>new Object()로 사용자 객체 만들기</title>
<script>
    //메소드로 사용할 3 개의 함수 작성
    function inquiry() { return this.balance; } // 잔금 조회
    function deposit(money) { this.balance += money; } // money 만큼 저금
    function withdraw(money) { // 예금 인출, money는 인출하고자 하는 액수
        // money가 balance보다 작다고 가정
        this.balance -= money;
        return money;
    }
 
    // 사용자 객체 만들기
    var account  = new Object();
    account.owner = "황기태"// 계좌 주인 프로퍼티 생성 및 초기화
    account.code = "111"// 코드 프로퍼티 생성 및 초기화
    account.balance = 35000// 잔액 프로퍼티 생성 및 초기화
    account.inquiry = inquiry; // 메소드 작성
    account.deposit = deposit; // 메소드 작성
    account.withdraw = withdraw; // 메소드 작성
</script>
</head>
<body>
<h3>new Object()로 사용자 객체 만들기</h3>
<hr>
<script>
    // 객체 활용
    document.write("account : ");
    document.write(account.owner + ", ");
    document.write(account.code + ", ");
    document.write(account.balance + "<br>");
 
    account.deposit(10000); // 10000원 저금
    document.write("10000원 저금 후 잔액은 " + account.inquiry() + "<br>");
    account.withdraw(5000); // 5000원 인출
    document.write("5000원 인출 후 잔액은 " + account.inquiry() + "<br>");
</script>
</body>
</html>
cs

* 리터럴 표기법으로 객체 만들기

account 객체는 중괄호를 이용하여 프로퍼티와 메소드를 한 번에 작성할 수 있다. 이것을 리터럴 표기법이라고 한다.

이 방법은 가독성이 높다.


예제 7-10. 리터럴 표기법으로 계좌를 표현하는 account 객체 만들기

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
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>리터럴 표기법으로 객체 만들기</title>
<script>
//사용자 객체 만들기
var account = {
    // 프로퍼티 생성 및 초기화
    owner : "황기태"// 계좌 주인
    code : "111"// 계좌 코드
    balance : 35000// 잔액 프로퍼티
 
    // 메소드 작성
    inquiry : function () { return this.balance; }, // 잔금 조회
    deposit : function(money) { this.balance += money; }, // 저금. money 만큼 저금
    withdraw : function (money) { // 예금 인출, money는 인출하고자 하는 액수
        // money가 balance보다 작다고 가정
        this.balance -= money;
        return money;
    }
};
</script></head>
<body>
<h3>리터럴 표기법으로 사용자 객체 만들기</h3>
<hr>
<script>
    document.write("account : ");
    document.write(account.owner + ", ");
    document.write(account.code + ", ");
    document.write(account.balance + "<br>");
 
    account.deposit(10000); // 10000원 저금
    document.write("10000원 저금 후 잔액은 " + account.inquiry() + "<br>");
    account.withdraw(5000); // 5000원 인출
    document.write("5000원 인출 후 잔액은 " + account.inquiry() + "<br>");
</script>
</body>
</html>
 
cs








Posted by 너래쟁이
: