是否可以在 javascript 中的对象文字上定义函数属性

Is it possible to define a function property on an object literal in javascript?

本文关键字:文字上 对象 定义 函数 属性 javascript 是否      更新时间:2023-09-26

我有以下代码,我想在对象文字(动作(中直接定义函数(第一个(上的属性(服务器(。

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

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

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

FunctionDecorator

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

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 上做更多工作,因为这有点笨拙,除非您想要可调用的对象(使用 decorator 方法(。例如,AngularJS有一个$http模块,可以像$http({...})$http.get(...)一样使用——这是因为它是一个装饰函数。

干杯