我有一个对象需要通过执行而不是赋值来设置某些属性。是否可以使用文字对象表示法来执行此操作?
我希望能够使用以下方法访问对象的属性:
myObject.propertyName
......而不是这个:
objInstance = new myObject();
objInstance.propertyName;
编辑澄清,基于 Bergi的答案,这就是我的目标:
var myObj = {
myInfo: (function() { return myObj.getInfo('myInfo'); })(),
getInfo: function() {
/* lots of execution here that would be redundant if done within myInfo */
}
}
// access the calculated property value
myObj.myInfo;
但是这给了我错误myObj is not defined
答案 0 :(得分:2)
我想你想要的是一个IEFE,你可以把它放在一个对象文字中:
var myObject = {
propertyName: (function() {
var it = 5*3; // compute something and
return it;
}()),
anotherFunction: function() {…}
};
myObject.propertyName // 15
也许你也想使用模块模式。看看Simplest/Cleanest way to implement singleton in JavaScript?。
答案 1 :(得分:0)
感谢 Bergi 找到this,这是我想要做的最后一个例子:
myObj = {
init: function() {
this.oneProperty = anyCodeIWant...
this.anotherProperty = moreCodeIWant...
// and so on
return this;
}
}.init();
myObj.oneProperty;
myObj.anotherProperty;
// and so on