3

オブジェクトのメソッドを 2 つの異なる名前で呼び出せるようにする必要がある状況にいますが、これを実行するために見つけた最短の方法は次のとおりです。

var c = {
    a : function() {console.log("called a!");}.
    b : function() {this.a();}
};

私はむしろ次のようなものがあることを望んでいました:

var c = {
    a,b : function() {console.log("called a!");}.
};

しかし、これまでの私の調査では、そのようなことは起きていません。もっと良い方法はありますか?

4

4 に答える 4

6

後で b を割り当てることができます。

var c = {
    a : function() {console.log("called a!");}.
};

c.b = c.a;
于 2013-10-08T20:44:20.397 に答える
2

コンストラクター関数を使用できます

function d(){
    this.a = this.b = function() {console.log("to c or not to c?");};
}

c = new d();

デモフィドル

于 2013-10-08T20:47:19.263 に答える
2

残念ながら、JS で 1 つのステートメントだけを使用してこれを行う良い方法はありませんが、ほとんどの JS モジュールで行われているクロージャ内で行うことができます。

var c = (function () {
    var a = function() {console.log("called a!");};
    return {
        'a': a,
        'b': a
    };
}());
于 2013-10-08T20:46:10.293 に答える
1
var c = new function() {
    this.a = this.b = function() {console.log("called a!");}.
};

のように見えるかもしれませんが、cは関数を参照しているのではなく、プロパティabプロパティを持つ新しいオブジェクトを参照しています。

さらに、追加の名前空間の混乱はありません。

複数のオブジェクトを作成するためにこれが必要な場合は、名前付きバージョンの方が理にかなっています。

于 2013-10-08T21:08:30.943 に答える