2

古典的なjscriptでクラスを作成する方法は?(jscript.netではありません)

そして、このクラスを参照する方法は?

で試してみました

class someclass {


}

しかし、それは機能しません。

4

6 に答える 6

6

jscriptにはクラスはありません。オブジェクトコンストラクターを作成できます。

function someclass() {
  this.answer = 42;
}

あなたはそれをクラスのように使います:

var obj = new someclass();

メソッドを作成するには、プロトタイプに関数を追加します。

someclass.prototype.getAnswer = function() {
  return this.answer;
}

使用法:

var ans = obj.getAnswer();
于 2011-06-18T22:32:59.610 に答える
3

そのようなクラスはありませんが、基本的なオブジェクト指向機能を取得する方法の簡単な例を次に示します。これが必要なすべてである場合、すばらしいですが、継承など、クラスの他の機能を求めている場合は、私よりも知識のある人が助けなければなりません。

function SomeClass(n) {
    this.some_property = n;
    this.some_method = function() {
        WScript.Echo(this.some_property);
    };
}

var foo = new SomeClass(3);
var bar = new SomeClass(4);
foo.some_method();
bar.some_property += 2;
bar.some_method();
于 2011-06-18T22:32:35.943 に答える
2

最も最近の:


2011年からの回答:

Javascriptのクラスは実際にはありませんが、似たようなものがあります。jsFiddleでこの例を確認してください

var classA = function() {     // declaring a "class"
    this.something = "Text";  // a public class field
};

classA.prototype.b = " b ";   // a class field
classA.c = "c";               // a static field
classA.prototype.d = function(x) { // a public class method
};
classA.e = function(x){     // a public static method
};

var a = new classA();       // instantiate a class

MDCについてもっと読む...

于 2011-06-18T22:35:05.480 に答える
1

クラスの名前で関数を定義します。その中で定義されたvarthis.whateverは、クラスメンバーとして機能します。

function SomeClass() {
  this.a;
  this.b;
}

次に、プロトタイプにメソッドを追加します。

SomeClass.prototype.methodA = function() {
  this.a++;
}

SomeClass.prototype.methodB = function() {
  this.b++;
}

このようにコンストラクター内でメソッドを定義することもできると思いますが、私はこの構文を長い間使用していません。

function SomeClass {
   this.a = 0;

   // Method definition
   this.methodA = function() {
      this.a++;
   }
}
于 2011-06-18T22:34:17.093 に答える
0

私はこれを自分でかすかに把握しているだけなので、私と一緒に耐えてください:

Javascriptにはクラスがありません。オブジェクトがあります。クラスを複製するには、オブジェクトを作成します。その「クラス」の「インスタンス」を作成するには、そのオブジェクトを複製します。これを行うにはいくつかの方法があります。1つは、オブジェクトを返す関数を作成してから、次のように関数を呼び出すことです。

function Car(brand, year) {
return {
brand: brand,
year: year
}
}
var modelT = Car("Ford", 1900); //or whenever the model T came out
modelT.brand == "Ford" //true
modelT.year == 1900; //true 

もう1つの方法は、関数であるオブジェクトを作成し、そのオブジェクトの「新しい」ものを作成することです。キャッチはあなたが使用しなければならないということですnew、そしてそれはかなり誤解を招きます。

var Car = function(make, year) {
    this.make = make;
    this.year = year;
};
var x =  new Car("ford", 1990);
//same tests hold true from earlier example

私の意見では、Object.create実際に起こっていることを最もよく表すため、使用するのが最善の方法です。

var Car = (function() {
    var self = Object.create({}, {
        make: {
value: "Ford"
}
year: {
value: 1900
}
    });
    return self;
})();
var modelT = Object.create(Car, {
                        make: {
                            value: "Model T"
                        },
year: {
value: 1901
}
                    });

残念ながら、これは非常に面倒です。

編集:

これは非常に役立つリソースです:JavaScriptの「クラス」

于 2011-06-18T22:32:17.650 に答える