你不能。但是,你可以做
Object.defineProperty(api.c, 'm', { value: function() { return 2; } });
由於Object.defineProperty
返回對象,你可以做
var api = {
c: Object.defineProperty(function() { }, 'm', {
value: function() { return 2; }
})
};
或者多個屬性:
var api = {
c: Object.defineProperties(function() { }, {
m: { value: function() { return 2; } },
...
})
};
這可能最接近滿足你的願望寫對象字面量形式的函數屬性。
或者,您可以使用(在ES6或Object.assign
)在大多數框架提供的extend
功能:
var api = {
c: Object.assign(function() { }, {
m: function() { return 2; }
)
};
隨意與$.extend
,_.extend
更換Object.assign
等
根據對你的容忍爲了醜陋,您可以嘗試以下內容,在不使用IIFE的情況下對@ zerkms提案進行變更(您需要變量x
):
var api = {
c: (x = function() { }, x.m = function() { return 2; }, x)
};
[在一行中聲明和分配函數對象與對象鍵]可能的重複(http://stackoverflow.com/questions/25098069/declaring-and-assigning-a-function-object-with-object-keys在一行) – 2014-10-11 06:43:58
這些答案中的任何一個適合你嗎?如果是這樣,請接受。 – 2014-10-29 07:38:44