Javascript 无法在同一语句中创建对象方法并分配对象的值
案例1:下面的代码解释了Ii如何创建方法并为对象赋值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
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;
})();