-1

我想创建一个自己的 javascript 类。我的问题是,如何根据上下文创建具有两种不同效果的函数。

这是一个例子:

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);
}

那么我怎样才能用一个函数得到两个不同的结果呢?myGraph.e(1,1) = 3myGraph.e(1,1)

谢谢 !

4

2 回答 2

1

这无法做到,但您可以简单地采用第三个参数:

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
}

注意:二维数组的第一个维度更常见的是表示y,而不是x

于 2012-10-28T08:45:53.987 回答