3

パブリックメソッドが必要かどうか疑問に思っています。これを使用する必要があります

var TestClass = function() {

    this.pub = function() {
              blahblah;
        };

プライベートメソッド(内部メソッド)が必要な場合は、使用する必要があります

var TestClass = function() {

    var pri = function() {
              blahblah;
        };

これは本当ですか?

4

2 に答える 2

5

いいえ、そうではありません。内部関数 ( pri) は関数であり、メソッドではありません。javascript では違いは無視できますが (すべての関数をメソッドとして使用でき、その逆も可能であるため)、それを as として呼び出すことはできませんthis.pri()。これは真のプライベート メソッドで可能です。

補足として、Java に似た構文にもかかわらず、Javascript、特にそのオブジェクト モデルは、Java/C++/C# とは大きく異なります。特に、クラスカプセル化などの概念は Javascript には存在しません。

于 2012-05-31T17:01:58.260 に答える
0

私は通常、このパターンを使用しますが、あまり見たことはありません。これは、メソッドを特別な方法で順序付けする必要がないようにするためです。すべてがパブリックの場合、通常、呼び出されるメソッドがメソッド呼び出しの前に宣言されていることを確認する必要があります

var person = new Person("Mo", "Yo");
person.getFullname();
person.getFirstname();
person.getLastname();           

function Person(firstname, lastname) {
    var firstname, lastname;

    (function constructor(){
        setFirstname(firstname);
        setLastname(lastname)
    })();

    this.getFullname = getFullname;   // Makes getFullName() public 
    function getFullname() {
        // Will allow you to order method in whatever order you want. 
        // If we where to have it as just this.getFullname = function () {...} and same for firstname 
        // as it is normally done, then this.getFirstname would have to be placed before this method. 
        // A common pain in the ass, that you cannot order methods as you want!    
        return getFirstname() + ", " + getLastname();   
    }               

    this.getFirstname = getFirstname;
    function getFirstname() {
        return firstname;
    }

    function setFirstname(name){
        firstname = name;
    }

    this.getLastname = getLastname;
    function getLastname() {
        return lastname;
    }
    function setLastname(name) {
        lastname = name;
    }    
}
于 2013-07-17T09:51:37.567 に答える