-1

独自の JavaScript クラスを作成したいと考えています。私の質問は、コンテキストに応じて 2 つの異なる効果を持つ関数を作成する方法です。

例を次に示します。

function Matrix(str) {
this.G = 2 dim array;
this.e = function(x,y){
    G[x][y] = 3 // if the user types myGraph.e(1,1) = 3;
    return G[x][y] // if user call myGraph.e(1,1);
}

では、1 つの関数だけで 2 つの異なる結果を得るにはどうすればよいでしょうか。myGraph.e(1,1) = 3myGraph.e(1,1)

どうも !

4

2 に答える 2

1

これはできませんが、単純に 3 番目の引数を取ることができます。

this.e = function( x , y, value){
    switch( arguments.length ) {
         case 3: this.G[x][y] = value; return; // myGraph.e( 1, 1, 3 );
         case 2: return this.G[x][y]; // myGraph.e( 1, 1 );
         default: throw new TypeError( "..." );
    }
}
于 2012-10-28T08:43:14.800 に答える
0

@Esalijaの答えを少し変更:

this.e = function(x, y, value) {
    if (typeof value !== 'undefined') {
        this.G[x][y] = value;
    }
    return this.G[x][y];  // always return the value
}

注: 2 次元配列の最初のy次元がではなくを表すのがより一般的ですx

于 2012-10-28T08:45:53.987 に答える