3

我处于一种情况,必须能够通过两个不同的名称调用对象上的方法,而我发现的最短方法是这样的:

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

恐怕在 JS 中仅使用一个语句就可以做到这一点,但是您可以在闭包中完成它,这是大多数 JS 模块所做的。

var c = (function () {
    var a = function() {console.log("called a!");};
    return {
        'a': a,
        'b': a
    };
}());
于 2013-10-08T20:46:10.293 回答
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 回答
1
var c = new function() {
    this.a = this.b = function() {console.log("called a!");}.
};

尽管它可能看起来像,但它c不是引用函数,而是引用具有aandb属性的新对象。

此外,没有额外的命名空间混乱。

如果您需要它来创建多个对象,那么命名版本更有意义。

于 2013-10-08T21:08:30.943 回答