[번역] Private Members in JavaScript -Douglas Crockford linguistics

http://javascript.crockford.com/private.html

JavaScript 는 세상에서 가장 오해받는 언어이다. 일부에선, private (속성의;역자) instance 변수와 메소드의 부재로 인해, 객체의 '정보 은닉' 기능이 결여되어 있다고 믿기도 한다. 그러나 이것은 오해다. JavaScript 객체는 private 멤버를 가질 수 있다. 여기 해답이 있다.


Objects


JavaScript 는 근본적으로 거의 object 이다. Array type도 object 이고, Function type도 object 이며, Object type도 object 이다. 그럼 여기서 말하는 object 란 무엇인가? object 는 name-value 쌍의 집합이다. name 은 string 이고, value 는 string, number, boolean, 그리고 (array 와 function 을 포함한) object 이다. 마치 hashtable 처럼 구현되기 때문에 아주 빠르게 value 에 접근할 수 있다.

만약 value 가 function 이라면, 이것을 method 라고 볼 수 있다. object 의 한 메소드가 호출되면, 'this' 변수는 해당 object 가 되고, 이 메소드는 'this' 변수를 통해 instance 변수에 접근하게 된다.

object 는 '생성자'라는 함수에 의해 생성된다. 이 함수는 object 를 초기화한다. 이 '생성자'에서, 여타의 언어에서 제공되는 class 의 속성들-static 변수와 메소드를 포함한- 이 제공된다.


Public


object 의 멤버는 모두 public 멤버이다. 어떤 function 이든 이 멤버에 접근해서 수정하거나 지우거나 또는 새로운 멤버를 추가할 수 있다. 여기, 새로운 object 에 멤버를 추가하는 2가지 대표적인 방법이 있다.

In the constructor

이 기법은 보통 public (속성의;역자) instance 변수를 초기화하는데 사용된다. '생성자'에서 사용된 'this' 변수는 새로운 멤버를 추가하는데 사용된다.

function Container(param) {
    this.member = param;
}

다음과 같이 새로운 object 를 생성하면,

var myContainer = new Container('abc');
myContainer.member 는 'abc'라는 값을 갖는다.

In the prototype

이 기법은 보통 public 메소드를 추가하는데 사용된다. 사용된 멤버 변수가 객체내에 이미 존재하던 것이 아니면, 객체의 생성자의 prototype 멤버로부터 찾아오게 된다. 이 prototype 메커니즘은 상속 구현에 사용되며 또한, prototype 을 사용하면 메모리 사용도 줄일 수 있다. 하나의 '생성자'로부터 생성된 모든 object 에 하나의 메소드를 추가하고자 한다면, 그 function 을 '생성자'의 prototype 에 추가하면 된다.

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

이제 다음과 같이 해당 메소드를 호출할 수 있게 되었고,

myContainer.stamp('def');
이는 결과적으로 'abcdef' 라는 값을 산출한다.


Private


private 멤버는 생성자에서 만들 수 있다. 일반적으로 var 로 선언한 변수와 함수의 매개변수는 private 멤버이다.

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


이 생성자는 param, secret, that 이라는 3개의 private instance 변수를 생성한다. object의 멤버로 생성되었지만, 이 변수들은 외부에서도, public 메소드에서도 접근할 수 없다. 이것들은 private 메소드에서 접근 가능한데, private 메소드는 생성자 내부에서의 function 정의로 구현된다.

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

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


private 메소드인 dec 는 instance 변수인 secret 을 검사해서, 0 보다 크면, 1 감소시키고 true 를 리턴한다. 그렇지 않다면, false 를 리턴한다. 이로인해 이 object 의 사용을  3회로 제한할 수 있게 되었다.

규정대로라면, 우리는 private 속성의 that 변수를 만들어서, object 가 private 메소드에서 가용하게 할 수 있는데, 이는 ECMAScript 스펙에 의해 inner fuction 에서 this 가 잘못 세팅되는 경우에 대한 차선책이다.

private 메소드는 public 메소드에서 호출될 수 없다. 보다 쓸만한 private 메소드 구현을 위해 이제 privileged 메소드를 알아봐야겠다.


Privileged


privileged 메소드는 private 변수와 메소드에 접근할 수 있으며, 또한, public 메소드와 외부에서 이 메소드를 사용할 수 있다. privileged 메소드를 삭제하거나 대체할 수 있는 반면, 수정하거나 secret 을 공개하게 할 수는 없다.

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() {
        if (dec()) {
            return that.member;
        } else {
            return null;
        }
    };
}


service 는 privileged 메소드이다. myContainer.service()를 호출하면 처음 3번은 'abc'를 리턴하고, 그후에는 null 을 리턴한다. service 는 private 인 dec 메소드를 호출하고 dec 는 private 변수인 secret 에 접근한다. service 는 타 object 와 메소드에서 사용할 수 있지만, private 멤버에의 직접적인 접근은 허용하지 않는다.


Closures


JavaScript 에서 이러한 public, private, privileged 멤버들의 구현이 가능한 것은, closure 때문이다. closure 의 의미는(Javascript의 closure 구현이 시사하는 바는), inner function 은 outer function 의 var 선언 변수와 매개변수에 접근할 수 있으며, 심지어 outer function 이 리턴된 이후에도 가능하다는 뜻이다. 이는 굉장히 강력한 언어 속성인데, JavaScript 에서 어떻게 이것이 가능한지 파헤쳐놓은 책은 아직은 없다. 대부분 아예 언급할 생각조차 없는 것 같다.

private 과 privileged 멤버는 object 가 생성될 때에만 만들 수 있다. 반면, public 멤버는 언제든 만들 수 있다.


Patterns


Public

function Constructor(...) {
    this.membername = value;
}
Constructor.prototype.membername = value;


Private

function Constructor(...) {
    var that = this;
    var membername = value;

    function membername(...) {...}
}


Note: function 구문

function membername(...) {...}



var membername = function(...) {...};
표현의 축약이다.


Privileged

function Constructor(...) {
    this.membername = function (...) {...};
}


(원문에) Copyright 2001 Douglas Crockford. All Rights Reserved Wrrrldwide.

핑백

덧글

  • via_gra 2015/07/03 01:27 # 삭제 답글

    You are my breathing in, I possess few blogs and very sporadically run out from to brand.
  • cia_lis_online 2015/07/08 00:42 # 삭제 답글

    Wow! This could be one particular of the most useful blogs We've ever arrive across on this subject. Actually Excellent. I'm also an expert in this topic so I can understand your hard work.
  • generic_via_gra 2015/07/08 00:43 # 삭제 답글

    Wow! This could be one particular of the most useful blogs We've ever arrive across on this subject. Actually Excellent. I'm also an expert in this topic so I can understand your hard work.
  • cia_lis 2015/07/08 00:44 # 삭제 답글

    Wow! This could be one particular of the most useful blogs We've ever arrive across on this subject. Actually Excellent. I'm also an expert in this topic so I can understand your hard work.
  • buy_cia_lis 2015/07/08 00:45 # 삭제 답글

    Wow! This could be one particular of the most useful blogs We've ever arrive across on this subject. Actually Excellent. I'm also an expert in this topic so I can understand your hard work.
  • cia_lis 2015/07/08 00:45 # 삭제 답글

    Wow! This could be one particular of the most useful blogs We've ever arrive across on this subject. Actually Excellent. I'm also an expert in this topic so I can understand your hard work.
  • soft 2015/07/09 04:07 # 삭제 답글

    if making snowfall leaps Hermes purses And totes operating 3ounce throwaway duplicate Hermes cups of coffee or even a conforms icle, pour the juices a mixture on the road to these kind of people until it is they have been perfect possessions wall plug ecommerce better than nearly full.
  • soft 2015/07/09 04:07 # 삭제 답글

    if making snowfall leaps Hermes purses And totes operating 3ounce throwaway duplicate Hermes cups of coffee or even a conforms icle, pour the juices a mixture on the road to these kind of people until it is they have been perfect possessions wall plug ecommerce better than nearly full.
  • generic 2015/07/09 04:07 # 삭제 답글

    if making snowfall leaps Hermes purses And totes operating 3ounce throwaway duplicate Hermes cups of coffee or even a conforms icle, pour the juices a mixture on the road to these kind of people until it is they have been perfect possessions wall plug ecommerce better than nearly full.
  • soft 2015/07/09 04:08 # 삭제 답글

    if making snowfall leaps Hermes purses And totes operating 3ounce throwaway duplicate Hermes cups of coffee or even a conforms icle, pour the juices a mixture on the road to these kind of people until it is they have been perfect possessions wall plug ecommerce better than nearly full.
  • generic 2015/07/09 04:08 # 삭제 답글

    if making snowfall leaps Hermes purses And totes operating 3ounce throwaway duplicate Hermes cups of coffee or even a conforms icle, pour the juices a mixture on the road to these kind of people until it is they have been perfect possessions wall plug ecommerce better than nearly full.
  • cia_lis 2015/07/09 04:52 # 삭제 답글

    Im not that much of a online reader to be honest but your blogs really nice, keep it up! I'll go ahead and bookmark your site to come back later. All the best
  • via_gra 2015/07/09 04:52 # 삭제 답글

    Im not that much of a online reader to be honest but your blogs really nice, keep it up! I'll go ahead and bookmark your site to come back later. All the best
  • generic_cia_lis 2015/07/09 04:53 # 삭제 답글

    Im not that much of a online reader to be honest but your blogs really nice, keep it up! I'll go ahead and bookmark your site to come back later. All the best
  • generic_via_gra 2015/07/09 04:53 # 삭제 답글

    Im not that much of a online reader to be honest but your blogs really nice, keep it up! I'll go ahead and bookmark your site to come back later. All the best
  • dosage 2015/07/10 22:49 # 삭제 답글

    I really like your blog.. very nice colors &amp theme. Did you make this website yourself or did you hire someone to do it for you? Plz respond as I'm looking to construct my own blog and would like to know where u got this from. thank you
  • via_gra 2015/07/10 22:54 # 삭제 답글

    I really like your blog.. very nice colors &amp theme. Did you make this website yourself or did you hire someone to do it for you? Plz respond as I'm looking to construct my own blog and would like to know where u got this from. thank you
  • generic_cia_lis 2015/07/11 14:16 # 삭제 답글

    Hi my friend! I want to say that this post is amazing, great written and include almost all significant infos. I'd like to see more posts like this.
  • super 2015/07/17 01:44 # 삭제 답글

    Keep working ,fantastic job!
  • via_gra_professional 2015/07/17 01:45 # 삭제 답글

    Keep working ,fantastic job!
  • via_gra 2015/07/17 22:51 # 삭제 답글

    Good post. I study something more challenging on completely different blogs everyday. It is going to all the time be stimulating to learn content material from different writers and practice somewhat one thing from their store. I
  • cia_lis 2015/07/18 08:51 # 삭제 답글

    My brother recommended I may like this website. He used to be totally right. This post truly made my day. You can not consider simply how so much time I had spent for this info! Thanks!
  • via_gra 2015/07/18 08:51 # 삭제 답글

    My brother recommended I may like this website. He used to be totally right. This post truly made my day. You can not consider simply how so much time I had spent for this info! Thanks!
  • payday 2015/07/19 16:44 # 삭제 답글

    Very nice post. I certainly appreciate this website.
  • payday 2015/07/19 16:44 # 삭제 답글

    Very nice post. I certainly appreciate this website.
  • cash 2015/07/19 16:45 # 삭제 답글

    Very nice post. I certainly appreciate this website.
  • payday_advances 2015/07/19 16:45 # 삭제 답글

    Very nice post. I certainly appreciate this website.
  • order_cia_lis 2015/07/19 16:46 # 삭제 답글

    Very nice post. I certainly appreciate this website.
  • payday 2015/07/20 02:13 # 삭제 답글

    Hiya, I am really glad I have found this information. Nowadays bloggers publish just about gossips and web and this is really annoying. A good blog with interesting content, that is what I need. Thanks for keeping this website, I'll be visiting it. Do you do newsletters? Can not find it.
  • payday 2015/07/20 02:13 # 삭제 답글

    Hiya, I am really glad I have found this information. Nowadays bloggers publish just about gossips and web and this is really annoying. A good blog with interesting content, that is what I need. Thanks for keeping this website, I'll be visiting it. Do you do newsletters? Can not find it.
  • payday 2015/07/20 02:14 # 삭제 답글

    Hiya, I am really glad I have found this information. Nowadays bloggers publish just about gossips and web and this is really annoying. A good blog with interesting content, that is what I need. Thanks for keeping this website, I'll be visiting it. Do you do newsletters? Can not find it.
  • payday 2015/07/20 02:14 # 삭제 답글

    Hiya, I am really glad I have found this information. Nowadays bloggers publish just about gossips and web and this is really annoying. A good blog with interesting content, that is what I need. Thanks for keeping this website, I'll be visiting it. Do you do newsletters? Can not find it.
  • cia_lis 2015/07/20 02:14 # 삭제 답글

    Hiya, I am really glad I have found this information. Nowadays bloggers publish just about gossips and web and this is really annoying. A good blog with interesting content, that is what I need. Thanks for keeping this website, I'll be visiting it. Do you do newsletters? Can not find it.
  • fast 2015/07/21 17:12 # 삭제 답글

    Good website! I truly love how it is easy on my eyes and the data are well written. I'm wondering how I could be notified whenever a new post has been made. I have subscribed to your RSS feed which must do the trick! Have a great day!
  • fast 2015/07/21 17:14 # 삭제 답글

    Good website! I truly love how it is easy on my eyes and the data are well written. I'm wondering how I could be notified whenever a new post has been made. I have subscribed to your RSS feed which must do the trick! Have a great day!
  • cia_lis 2015/07/21 17:16 # 삭제 답글

    Good website! I truly love how it is easy on my eyes and the data are well written. I'm wondering how I could be notified whenever a new post has been made. I have subscribed to your RSS feed which must do the trick! Have a great day!
  • via_gra 2015/07/21 17:17 # 삭제 답글

    Good website! I truly love how it is easy on my eyes and the data are well written. I'm wondering how I could be notified whenever a new post has been made. I have subscribed to your RSS feed which must do the trick! Have a great day!
  • fast 2015/07/23 03:38 # 삭제 답글

    Hi there. Simply just planned to request a simple dilemma.
  • fast 2015/07/23 03:38 # 삭제 답글

    Hi there. Simply just planned to request a simple dilemma.
  • cia_lis_price 2015/07/23 03:38 # 삭제 답글

    Hi there. Simply just planned to request a simple dilemma.
  • via_gra_price 2015/07/23 03:39 # 삭제 답글

    Hi there. Simply just planned to request a simple dilemma.
  • payday_cash 2015/07/24 13:08 # 삭제 답글

    This really is actually fascinating, That you are a quite specialist blogger. Ive joined your rss feed and sit up for looking for more of your excellent post. Also, I have shared your web site in my social networks!
  • payday 2015/07/24 13:08 # 삭제 답글

    This really is actually fascinating, That you are a quite specialist blogger. Ive joined your rss feed and sit up for looking for more of your excellent post. Also, I have shared your web site in my social networks!
  • loan 2015/07/24 13:09 # 삭제 답글

    This really is actually fascinating, That you are a quite specialist blogger. Ive joined your rss feed and sit up for looking for more of your excellent post. Also, I have shared your web site in my social networks!
  • loans 2015/07/24 13:09 # 삭제 답글

    This really is actually fascinating, That you are a quite specialist blogger. Ive joined your rss feed and sit up for looking for more of your excellent post. Also, I have shared your web site in my social networks!
  • generic_cia_lis 2015/07/24 23:31 # 삭제 답글

    Hey, thanks for the post.Really thank you! Really Cool.
  • generic 2015/07/24 23:32 # 삭제 답글

    Hey, thanks for the post.Really thank you! Really Cool.
  • payday_loans 2015/07/25 06:59 # 삭제 답글

    you use disallowed a designer to make the style? Superb vocation!
  • payday_loans 2015/07/25 06:59 # 삭제 답글

    you use disallowed a designer to make the style? Superb vocation!
  • payday_loans 2015/07/25 07:00 # 삭제 답글

    you use disallowed a designer to make the style? Superb vocation!
  • payday_loans 2015/07/25 07:00 # 삭제 답글

    you use disallowed a designer to make the style? Superb vocation!
  • cia_lis 2015/07/28 23:54 # 삭제 답글

    Im genuinely enjoying the style and layout of one's website. Its a very uncomplicated on the eyes which makes it a great deal much more enjoyable for me to come here and pay a visit to far more typically. Did you hire out a designer to make your theme? Excellent perform!
  • makers 2015/07/28 23:54 # 삭제 답글

    Im genuinely enjoying the style and layout of one's website. Its a very uncomplicated on the eyes which makes it a great deal much more enjoyable for me to come here and pay a visit to far more typically. Did you hire out a designer to make your theme? Excellent perform!
  • cia_lis 2015/08/04 23:54 # 삭제 답글

    Nice blog here! Also your website loads up fast! What host are you using? Can I get your affiliate link to your host? I wish my site loaded up as quickly as yours lol
  • via_gra_online 2015/08/04 23:54 # 삭제 답글

    Nice blog here! Also your website loads up fast! What host are you using? Can I get your affiliate link to your host? I wish my site loaded up as quickly as yours lol
  • payday_loans 2015/08/07 18:21 # 삭제 답글

    is elocon a steroid cream
  • payday_loans 2015/08/07 18:21 # 삭제 답글

    is elocon a steroid cream
  • payday_loans 2015/08/07 18:22 # 삭제 답글

    is elocon a steroid cream
  • payday_loans 2015/08/07 18:22 # 삭제 답글

    is elocon a steroid cream
  • payday_loans 2015/08/07 18:22 # 삭제 답글

    is elocon a steroid cream
  • cia_lis 2015/08/08 02:16 # 삭제 답글

    Thanks for any other informative web site. Where else may just I get that kind of information written in such an ideal way? I have a mission that I am just now operating on, and I have been on the look out for such information.
  • professional_via_gra 2015/08/08 02:20 # 삭제 답글

    Thanks for any other informative web site. Where else may just I get that kind of information written in such an ideal way? I have a mission that I am just now operating on, and I have been on the look out for such information.
  • cia_lis 2015/08/14 18:06 # 삭제 답글

    Just wanna input on few general things, The website pattern is perfect, the subject material is real excellent. Believe those who are seeking the truth. Doubt those who find it. by Andre Gide.
  • via_gra 2015/08/14 18:07 # 삭제 답글

    Just wanna input on few general things, The website pattern is perfect, the subject material is real excellent. Believe those who are seeking the truth. Doubt those who find it. by Andre Gide.
  • cia_lis 2015/08/14 18:07 # 삭제 답글

    Just wanna input on few general things, The website pattern is perfect, the subject material is real excellent. Believe those who are seeking the truth. Doubt those who find it. by Andre Gide.
  • via_gra 2015/08/14 18:08 # 삭제 답글

    Just wanna input on few general things, The website pattern is perfect, the subject material is real excellent. Believe those who are seeking the truth. Doubt those who find it. by Andre Gide.
  • cia_lis 2015/08/14 18:32 # 삭제 답글

    Im not that much of a online reader to be honest but your blogs really nice, keep it up! I'll go ahead and bookmark your site to come back later. All the best
  • generic_via_gra 2015/08/14 18:34 # 삭제 답글

    Im not that much of a online reader to be honest but your blogs really nice, keep it up! I'll go ahead and bookmark your site to come back later. All the best
  • cia_lis 2015/08/14 18:35 # 삭제 답글

    Im not that much of a online reader to be honest but your blogs really nice, keep it up! I'll go ahead and bookmark your site to come back later. All the best
  • generic_via_gra 2015/08/14 18:37 # 삭제 답글

    Im not that much of a online reader to be honest but your blogs really nice, keep it up! I'll go ahead and bookmark your site to come back later. All the best
  • cia_lis 2015/08/15 01:36 # 삭제 답글

    What is the website that means it is easy to understand podcasts and blog sites? I don't get an iPod, does that make any difference? .
  • via_gra 2015/08/15 01:36 # 삭제 답글

    What is the website that means it is easy to understand podcasts and blog sites? I don't get an iPod, does that make any difference? .
  • cheap_cia_lis 2015/08/15 01:37 # 삭제 답글

    What is the website that means it is easy to understand podcasts and blog sites? I don't get an iPod, does that make any difference? .
  • cheap_via_gra 2015/08/15 01:37 # 삭제 답글

    What is the website that means it is easy to understand podcasts and blog sites? I don't get an iPod, does that make any difference? .
  • buy 2015/08/15 08:29 # 삭제 답글

    Hello to all, the contents existing at this site are in fact remarkable for people knowledge, well, keep up the nice work fellows.
  • vs 2015/08/15 08:29 # 삭제 답글

    Hello to all, the contents existing at this site are in fact remarkable for people knowledge, well, keep up the nice work fellows.
  • buy 2015/08/15 08:29 # 삭제 답글

    Hello to all, the contents existing at this site are in fact remarkable for people knowledge, well, keep up the nice work fellows.
  • vs 2015/08/15 08:30 # 삭제 답글

    Hello to all, the contents existing at this site are in fact remarkable for people knowledge, well, keep up the nice work fellows.
  • payday 2015/08/15 21:05 # 삭제 답글

    Nice post. I was checking constantly this blog and I am impressed! Extremely useful information specially the last part
  • payday 2015/08/15 21:05 # 삭제 답글

    Nice post. I was checking constantly this blog and I am impressed! Extremely useful information specially the last part
  • payday_advances 2015/08/15 21:06 # 삭제 답글

    Nice post. I was checking constantly this blog and I am impressed! Extremely useful information specially the last part
  • cash 2015/08/15 21:06 # 삭제 답글

    Nice post. I was checking constantly this blog and I am impressed! Extremely useful information specially the last part
  • advance 2015/08/15 21:06 # 삭제 답글

    Nice post. I was checking constantly this blog and I am impressed! Extremely useful information specially the last part
  • cia_lis 2015/08/25 22:55 # 삭제 답글

    Right now it looks like WordPress is the top blogging platform available right now. from what I've read Is that what you're using on your blog?
  • via_gra 2015/08/25 22:55 # 삭제 답글

    Right now it looks like WordPress is the top blogging platform available right now. from what I've read Is that what you're using on your blog?
  • cia_lis 2015/08/25 22:56 # 삭제 답글

    Right now it looks like WordPress is the top blogging platform available right now. from what I've read Is that what you're using on your blog?
  • via_gra 2015/08/25 22:56 # 삭제 답글

    Right now it looks like WordPress is the top blogging platform available right now. from what I've read Is that what you're using on your blog?
  • cheap 2015/08/26 12:36 # 삭제 답글

    You are a really persuasive writer. I can see this in your writeup. You've a way of writing compelling info that sparks significantly interest.
  • via_gra 2015/08/26 12:36 # 삭제 답글

    You are a really persuasive writer. I can see this in your writeup. You've a way of writing compelling info that sparks significantly interest.
  • cheap 2015/08/26 12:38 # 삭제 답글

    You are a really persuasive writer. I can see this in your writeup. You've a way of writing compelling info that sparks significantly interest.
  • via_gra 2015/08/26 12:38 # 삭제 답글

    You are a really persuasive writer. I can see this in your writeup. You've a way of writing compelling info that sparks significantly interest.
  • discount_cia_lis 2015/08/28 02:50 # 삭제 답글

    If you are going for best contents like myself, simply go to see this site all
  • discount_via_gra 2015/08/28 02:50 # 삭제 답글

    If you are going for best contents like myself, simply go to see this site all
  • dosage_cia_lis 2015/08/28 02:50 # 삭제 답글

    If you are going for best contents like myself, simply go to see this site all
  • via_gra_dosage 2015/08/28 02:50 # 삭제 답글

    If you are going for best contents like myself, simply go to see this site all
  • generic 2015/08/28 06:31 # 삭제 답글

    I think this is one of the most important info for me. And i am glad reading your article. But wanna remark on few general things, The web site style is ideal, the articles is really excellent D. Good job, cheers
  • generic 2015/08/28 06:32 # 삭제 답글

    I think this is one of the most important info for me. And i am glad reading your article. But wanna remark on few general things, The web site style is ideal, the articles is really excellent D. Good job, cheers
  • via_gra 2015/08/28 06:32 # 삭제 답글

    I think this is one of the most important info for me. And i am glad reading your article. But wanna remark on few general things, The web site style is ideal, the articles is really excellent D. Good job, cheers
  • generic 2015/08/28 06:32 # 삭제 답글

    I think this is one of the most important info for me. And i am glad reading your article. But wanna remark on few general things, The web site style is ideal, the articles is really excellent D. Good job, cheers
  • generic 2015/08/28 06:32 # 삭제 답글

    I think this is one of the most important info for me. And i am glad reading your article. But wanna remark on few general things, The web site style is ideal, the articles is really excellent D. Good job, cheers
댓글 입력 영역
◀ 다음덧글    이전덧글 ▶