2014-09-23 89 views
-2
Module = (function() { 


    var Method = function() { 

     this.doSomething =function() { 
      return "doSomething"; 
     }; 

    } 


    return { 
     Method:Method 
    }; 

})(); 
var value=Module.Method.doSomething; 
console.log(value); 

新来的Javascript,来自Java背景。JavaScript模块问题?

为什么值回到未定义?

干杯。

回答

0

你必须有Method对象访问属性doSomething,就可以实现像

Module = (function() { 
 

 

 
    var Method = function() { 
 

 
     this.doSomething =function() { 
 
      return "doSomething"; 
 
     }; 
 

 
    } 
 

 

 
    return { 
 
     Method:Method 
 
    }; 
 

 
})(); 
 
var value= new Module.Method(); 
 
alert(value.doSomething());

你也可以接近它像

Module = (function() { 

    var Method = function() { 

    this.doSomething =function() { 
     return "doSomething"; 
    }; 

    } 
    return { 
    Method:new Method 
}; 

})(); 
var value=Module.Method.doSomething(); 
alert(value); 
+0

var value =(new Module).Method(); – OctoD 2014-09-23 07:58:13

+0

@OctoD:这不会工作,因为我们不希望创建模块的obejct。相反,我们需要Method的对象。这就是为什么我这样说。 – mithunsatheesh 2014-09-23 08:09:14

+0

呃,我的错误,对不起。我应该在凌晨停止喝酒:) – OctoD 2014-09-23 08:16:24

0

使用as

var value= new Module.Method().doSomething(); 

DEMO

0

Module.Method是一个函数,显然是为了用作constructor。你也没有调用这个函数。

var value=new Module.Method().doSomething(); 
          ^^^ create an instance of Module.Method 
          ^^^ call the doSomething method of it.