2013-10-14 36 views
0

在代码:是否有可能从构造函数实例化没有参数的空对象/对象?

function Foo() { 
    this.someMethod = function() { 
     console.log("property"); 
    }; 
} 

可以实例化空Foo对象,并调用的someMethod的呢?像:

Foo.someMethod(); 

我得到了TypeError,这意味着没有。

好的,接下来,我可以像PHP中的__construct一样定义默认方法,它在实例化对象时执行一些代码,甚至更好地让该函数的评估成为对象内的某个属性值,所以即使当我实例化“空“对象,该函数在实例化新对象时设置了一些值。

+6

'Foo' ** **是构造函数,你应该将方法添加到'prototype',然后只需创建一个新isntance与'新Foo()。someMethod()' – elclanrs

回答

3

你正在做它的方式,

var fooObj = new Foo(); 
fooObj.someMethod(); 

将正常工作。


你也可以尝试做这种方式:

var Foo = (function(){ 

    function Foo() { 
     // Foo constructor 
    } 

    Foo.prototype.someMethod = function(){ 
     // public Foo function 
    }; 

    var somePrivateFunction = function(){ 
     // private Foo function 
    }; 

    return Foo; 

})(); 

var fooObj = new Foo(); 
+1

我认为你需要一个'返回Foo'在那里... – Pointy

+0

我__knew__我忘记了一些东西@Pointy谢谢^ _^ – Neal

+0

现在我真的很困惑。让我们试试这个,我可以直接调用对象构造函数的方法吗?像'Foo.someMethod()'而不用new关键字创建新实例? –

相关问题