1. public static member.
Javascript에는 Static Member를 표기하는 문법이 존재하지 않는다.
하지만 생성자에 property를 추가함으로써 Static 변수처럼 동작하도록
구현할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var Gadget = function () {}; // Static Method Gadget.isShiny = function () { return 'isShiny is static method'; } Gadget.prototype.setPrice = function (price) { this.price = price; }; // Call Static Method. Gadget.isShiny(); // Call Normal Method. var phone = new Gadget(); phone.setPrice(100); |
2. private static member.
객체의 instance들 사이에서만 접근할 수 있는 private static member도
아래와 같이 closure를 이용해서 만들 수 잇다.
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 |
var PrivateStatic = (function () { var static_bar = 0; function incrementBar() { ++static_bar; } function decrementBar() { --static_bar; } function getBar() { return static_bar; } function InstanceConstructor(seed) { var instance_bar = seed; function _incrementInstanceBar() { ++instance_bar; } function _decrementInstanceBar() { --instance_bar; } function _getInstanceBar() { return instance_bar; } return { incrementStaticBar : incrementBar, decrementStaticBar : decrementBar, getStaticBar : getBar, incrementInstanceBar : _incrementInstanceBar, decrementInstanceBar : _decrementInstanceBar, getInstanceBar : _getInstanceBar } } return InstanceConstructor; })(); var t1 = new PrivateStatic(10); var t2 = new PrivateStatic(5); console.log(t1.getStaticBar()); // 0 console.log(t2.getStaticBar()); // 0 t1.incrementStaticBar(); console.log(t1.getStaticBar()); // 1 console.log(t2.getStaticBar()); // 1 console.log(t1.getInstanceBar()); // 10 console.log(t2.getInstanceBar()); // 5 t1.incrementInstanceBar(); console.log(t1.getInstanceBar()); // 11 console.log(t2.getInstanceBar()); // 5 |
2013년 9월 16일 at 1:42 오전
찾다보니 장록이 사이트까지 왔네?
2013년 9월 16일 at 12:20 오후
웰컴!