是否可以在Javascript对象文字中使用构造函数来避免实例化?

时间:2014-02-25 18:05:13

标签: javascript oop object

我有一个对象需要通过执行而不是赋值来设置某些属性。是否可以使用文字对象表示法来执行此操作?

我希望能够使用以下方法访问对象的属性:

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

2 个答案:

答案 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