0

次のコードがあり、オブジェクト リテラル ( actions )で直接定義された関数 ( first ) のプロパティ ( server ) を使用したいと考えています。

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

ただし、(decorator メソッドを使用して) 呼び出し可能なオブジェクトが必要でない限り、これはやや面倒なので、いくつかの OOP でもっと作業できると思います。たとえば、AngularJS にはor$httpのように使用できるモジュールがあります。これは装飾された関数であるためです。$http({...})$http.get(...)

乾杯

于 2015-09-01T22:48:05.887 に答える