Javascript 无法在同一语句中创建对象方法并分配对象的值

Javascript 无法在同一语句中创建对象方法并分配对象的值,javascript,Javascript,案例1:下面的代码解释了Ii如何创建方法并为对象赋值 var obj = function(){return 0}; // obj is asigned with a function object obj.val = obj(); // val property is created and assigned with a value 现在我可以通过编写两条语句来实现这一点,但是JS不允许我在一条语句中编写对象的定义,比如case2 案例2: var obj = {function(){re

案例1:下面的代码解释了Ii如何创建方法并为对象赋值

var obj = function(){return 0}; // obj is asigned with a function object
obj.val = obj(); // val property is created and assigned with a value
现在我可以通过编写两条语句来实现这一点,但是JS不允许我在一条语句中编写对象的定义,比如case2

案例2:

var obj = {function(){return 0}, val : obj()};
案例3:人们可能会建议我这样写

var obj = { 
            func : function(){return 0},
            val : obj.func()
          };
但我不想这样写,因为两者都是属性,都不是值。我希望对象行为与案例1相同,代码编写与案例2相同


有人能解释一下如何在JS中实现这一点吗?你可以用案例1的格式创建一个函数:

function defaultValueObject(obj) {
    obj.val = obj();
    return obj;
}

var x = defaultValueObject(function () { return 0; });

。。。但我真的不明白你为什么要这么做。

下划线或jQuery可能会有所帮助。比如说

var composed = _.extend(function(){return 42}, {val: 10})
composed() // 42
composed.val // 13

我不确定您想要实现什么,但您可以执行以下任一操作:

直接创建并实例化对象

使用调用的函数返回所需的对象


这两个建议本质上是做同一件事。

你为什么要这么做?期望的结果是什么?@RichardDalton我可以为对象设置一个默认值,而不是使用func之类的属性引用它。我希望对象的方法访问对象的值,而不使用创建的属性存储值
var obj = {
  val: 0
};
var object = (function() {
  var self = {};
  self.val = 0;
  return self;
})();