0

我有以下代码,我希望函数(first )上的属性( server )直接在对象文字(actions)中定义。

var actions = {
    first: function(){
        console.log("First")
    },
    second: function(){
        console.log("Second")
    },
};
actions.first.server = "server_1";
4

2 回答 2

1

在有疑问时使用函数,或者在任何时候想要使用需要变量的复杂构造时使用:

var actions = {

    first: (function(){ 

         function first(){
              console.log("First")
         }; 

         first.server="server_1"; 
         return first; 
     }()),

    second: function(){
        console.log("Second")
    }
};
于 2013-10-09T20:59:58.510 回答
0

函数装饰器

将您的函数作为上下文传递给类/装饰器 - 或 - 故意添加属性:

function FunctionDecorator(server) { this.server = server; return this; }
var object = {
    first: FunctionDecorator.call(function first() {}, 'server_1')
};

- 或者 -

var object = {
    first: function first() { first.server = first.server || getServer(); }
};

但是,我想说你可以在一些 OOP 上做更多的工作,因为这有点笨拙,除非你想要可调用的对象(使用装饰器方法)。例如,AngularJS 有一个$http可以像$http({...})或一样使用的模块$http.get(...)——这是因为它是一个装饰函数。

干杯

于 2015-09-01T22:48:05.887 回答