본문 바로가기

자바스크립트

객체지향 프로그래밍(4): 캡슐화

var Person = function(arg) {
    var name = arg ? arg : 'devjones';

    this.getName = function() {
        return name;
    }
    this.setName = function(arg) {
        name = arg;
    }
};

var me = new Person();
console.log(me.getName());
me.setName('grindman');
console.log(me.getName());
console.log(me.name);   // undefined

 

var ArrCreate = function(arg) {
    var arr = [1,2,3];

    return {
        getArr: function() {
            return arr;
        }
    }
};

var obj = ArrCreate();
var arr = obj.getArr();
arr.push(5);
console.log(obj.getArr());  // [1,2,3,5]

 

 

var Person = function(arg) {
    var name = arg ? arg : 'devjones';

    return {
        getName: function() {
            return name;
        },
        setName = function(arg) {
            name = arg;
        }
    }
};

var me = Person();
console.log(me.getName());

위 코드는 Person 객체의 프로토타입에 접근할 수 없다.

접근하려면 객체가 아닌 함수를 반환하자.

var Person = function(arg) {
    var name = arg ? arg : 'devjones';

    var Func = function() {}
    Func.prototype = {
        getName: function() {
            return name;
        },
        setName: function(arg) {
            name = arg;
        }
    };

    return Func;
};