lang/js

javascript public, private, privileged

C/H 2015. 10. 28. 08:30
javascript public, private, privileged


넘 오래되서 이런것도 헷 갈릴때가 있다니...

public

# In the constructor
function Container(param) {
    this.member = param;
}
var myContainer = new Container('abc');

# In the prototype
Container.prototype.stamp = function (string) {
    return this.member + string;
}

myContainer.stamp('def')

Private

# constructor
function Container(param) {
    this.member = param;
    var secret = 3;
    var that = this;
}

함수를 통해서 멤버변수에 접근 가능

function Container(param) {

    function dec() {
        if (secret > 0) {
            secret -= 1;
            return true;
        } else {
            return false;
        }
    }

    this.member = param;
    var secret = 3;
    var that = this;
}

Privileged

권한을 획득하는 방법으로 Container.service() 를 호출하면 3번까지는 설정된 param값이 호출되고 4번째 부터는 null 이 호출된다.

function Container(param) {

    function dec() {
        if (secret > 0) {
            secret -= 1;
            return true;
        } else {
            return false;
        }
    }

    this.member = param;
    var secret = 3;
    var that = this;

    this.service = function () {
        return dec() ? that.member : null;
    };
}

Closures

자바스크립트는 public, private와 privileged 멤버를 가질 수 있기 때문에 자바스크립트는 폐쇠형 코딩이 가능하다.
하지만 클래스 선언 후 외부함수가 반환된 후에도 내부 함수는 변수와 외부 함수의 매개 변수에 대한 액세스가 가능하다.
오브젝트가 생성될 때 private, privileged 를 제외한 public은 언제든지 추가가 가능하며 이로인해서 악용이 될 가능성이 있다.

반응형

'lang > js' 카테고리의 다른 글

Javascript 2015, ECMAScript6, ES6  (0) 2016.10.09
Range Text  (0) 2015.12.18
자바 스크립트 무료 전자 책 30  (2) 2014.09.30
모바일 Javascript API  (0) 2014.07.29
tinyMCE INIT  (0) 2014.07.18