0

私はjavascriptに非常に慣れていないので、クラスとメソッドの動作方法が混乱しています。

基本的に私はこのようなコードを持っています:

function container(x, y, z) {
  this.x = x;
  this.y = y;
  this.z = z;

  this.sumUp = function addUp(x, y, z) {
    var a = x + y + z;
  };
}

私がやりたいのは、コードの他の場所で、コンテナー内の値を使用して、コンテナー内で定義された関数を使用することです。実際にこれを行うにはどうすればよいですか?

の線に沿った何か

container1 = new container (1, 2, 3);
container.sumUp(this.x, this.y, this.z);

またはそのようなもの。私は非常に混乱していて、すべてが間違っていると思っています。

4

2 に答える 2

2

私はあなたがこのような何かが欲しいと思います:

function Container(x, y, z){
  this.x = x;
  this.y = y;
  this.z = z;

  this.sumUp = function addUp(x, y, z){
    alert(this.x + this.y + this.z);
  };
}

container_instance = new Container(1, 2, 3);
container_instance.sumUp();

しかし、私はお勧めします:

function Container(x, y, z){
  this.x = x;
  this.y = y;
  this.z = z;
}

Container.prototype.sumUp = function addUp(x, y, z){
  alert(this.x + this.y + this.z);
};

container_instance = new Container(1, 2, 3);
container_instance.sumUp();

それがどのように機能するかです(短い):

あなたが持っているJavaScriptobjectsでは、それらはハッシュのようなものです:

var obj = {
  'a': 1,
  'b': 2,
  'c': 3
};

また、キーで値を取得または設定できます。

alert(obj.a); // alerts 1
alert(obj['a']); // same thing
obj['c'] = 4;

あなたの場合Container、あなたのオブジェクトを構築する関数です。これを行うnew Container(1, 2, 3);と、空のオブジェクトが作成され、オブジェクトのコンテキストで関数が実行されます。

于 2012-12-09T15:31:50.137 に答える
1
function Container(x, y, z){
  this.x = x;
  this.y = y;
  this.z = z;
}
// There is no point to put parameters there since they are already instance variables.
Container.prototype.sumUp = function addUp(){
  alert(this.x + this.y + this.z);
};

container_instance = new Container();
container_instance.sumUp();
于 2012-12-09T15:34:28.713 に答える