0

これはJavascriptで行うことができますか? Java Wiki ページを JavaScript に変換しています。int の代わりに var を使用する必要があると確信しています。

class Sample extends Object {

 int ivar1;
 int ivar2; 

Sample(int i, int j) {
 ivar1 = i;
 ivar2 = j;

}

int emptyMethod() {}
...

for (int i = 0; i < maxLoops; i++) {
...
 }
}
4

4 に答える 4

2

プロトタイプまたはクロージャーのいずれかを調べてみてください。

MDN (プロトタイプ)から:

JavaScript のすべてのオブジェクトは Object の子孫です。すべてのオブジェクトは Object.prototype Object.prototype からメソッドとプロパティを継承します が、オーバーライドされる場合があります(null プロトタイプを持つオブジェクト、つまり Object.create(null) を除く)。たとえば、他のコンストラクターのプロトタイプはコンストラクター プロパティをオーバーライドし、独自の toString メソッドを提供します。Object プロトタイプ オブジェクトへの変更は、それらの変更の対象となるプロパティとメソッドがプロトタイプ チェーンに沿ってさらにオーバーライドされない限り、すべてのオブジェクトに反映されます。

Object特に他のライブラリにリンクする場合、型を直接変更すると問題が発生する可能性があることに多くの人が同意しています。このため、通常はクロージャーを使用するのが最善です。

MDNから(閉鎖):

Java などの言語は、メソッドをプライベートに宣言する機能を提供します。つまり、同じクラス内の他のメソッドによってのみ呼び出すことができます。

JavaScript はこれを行うためのネイティブな方法を提供しませんが、クロージャを使用してプライベート メソッドをエミュレートすることは可能です。プライベート メソッドは、コードへのアクセスを制限するのに役立つだけではありません。グローバル名前空間を管理する強力な方法を提供し、不要なメソッドがコードへのパブリック インターフェイスを乱雑にしないようにします。

于 2012-11-02T19:32:09.323 に答える
1

この振る舞いを大まかに模倣するさまざまな方法があります。次のようなオブジェクト指向のJavaScriptを作成するのに役立つライブラリがいくつかあります。

  • Prototype.js
  • Backbone.js
  • Angular.js

大まかPrototypesな例(プロトタイプフレームワークではない)での使用:

function Sample() {};
var i = new Sample();
var x = new Sample();    

Sample.prototype.init = function() {
    this.ivarA = "constant 1";
    this.ivarB = "constant 2";
}
Sample.prototype.set = function(i, j) {
    this.ivar1 = i;
    this.ivar1 = j;
}

//example of override
m.set = function(i, j) {
    this.ivar1 = i + j;
    this.ivar2 = i + i + j;    
}

i.init();
i.set("hey", "whats up?");
x.set(10, 5);
于 2012-11-02T19:36:45.463 に答える
1
// class Sample ...
// (including constructor)
function Sample (i, j) {

  this.ivar1 = i;
  this.ivar2 = j;

}

// ... extends Object
Sample.prototype = Object.create(Object.prototype);
// (the first Object is part of call, the second Object is the one from 'extend')

Sample.prototype.emptyMethod = function () {};
...

// Don't know where to put, probably error in original question:
// for (var i = 0; i < maxLoops; i++) {
// ...
于 2012-11-02T19:55:22.880 に答える
1
function Sample(i, j) {
    this.ivar1 = i;
    this.ivar2 = j;

    this.emptyMethod = function() {};
}

var sample = new Sample(1, 2);

sample.ivar1; // 1
于 2012-11-02T19:31:47.640 に答える