1

私はjavascriptを試しています。「クラス」を作ろうとしていますが、うまくいきません。MyClass の新しいインスタンスを開始する際に問題があります。jsフィドルを参照してください。PHPのようにMyClassにコンストラクタを追加することは可能ですか? また、これがJavaScriptで「クラス」を定義する方法であるかどうかもわかりません。したがって、どんな助けも大歓迎です。

http://jsfiddle.net/kasperfish/JnvFS/

    var MyClass={
        test:'hello',

        hallo: function(){
            alert(this.test);
        },

        setTest: function(x){
            this.test=x;
        }

    }

MyClass.hallo();
MyClass.setTest('world');
MyClass.hallo();

//not working because MyClass is/does not have a constructor
x= new MyClass;//*
x.hallo(); 

* firebug: TypeError: MyClass はコンストラクターではありません

4

3 に答える 3

2

JavaScript では、クラスのコンストラクターは単なる関数であり、メンバーはそこに設定されるか、prototypeオブジェクトを使用して設定されます。例えば:

function MyClass(someArgument) {
   // construction, init members of this
   this.someField = someArgument;
   this.test = 'a test';
}

// in addition, all members of `prototype` are automatically set on every 
// new instance of MyClass.
MyClass.prototype.hallo = function(){
         alert(this.test);
};

その後

var inst = new MyClass(42);
inst.hallo();

JavaScript でのプロトタイプ ベースの OOP を読むことをお勧めします。これは、PHP で慣れ親しんだものとは明らかに異なり、一般的にあまり直感的ではありません。

于 2013-10-03T23:42:32.467 に答える
1

わかりました。最初に、javascript には「クラス」がないことを知っておく必要があります。javascript のデータ構造は実際にはオブジェクトで構成されていますが、上記のコードからわかるように、オブジェクトは基本的に、PHP などの他の言語とは大きく異なり、キーと値のペアです。 javascript の OOP は大きく異なります。

コンストラクターを使用してオブジェクトのインスタンスを作成する場合は、次の方法で関数、コンストラクターを使用して「クラス」を作成してみてください。

function MyClass(){
    this.test ='hello';
    this.hallo = function(){
                     alert(this.test);
                 };

    this.setTest = function(x){
                       this.test=x;
                   };
}

var myClassInstance = new MyClass();
myClassInstance.hallo();
myClassInstance.setTest('world');
myClassInstance.hallo();

これが役立つことを願っています

于 2013-10-03T23:49:56.240 に答える