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 |