Javascript:调用像函数这样的对象

Javascript:调用像函数这样的对象,javascript,function,object,invoke,Javascript,Function,Object,Invoke,我可以有一个构造函数来创建一个实例,但是当被调用时执行一个特定的函数吗 var Foo = function(){ this.bar= "some variable"; this.invokeFunction = function(){ return this.bar; } return .... // what to do here }; var foo = new Foo(); return foo; // return the

我可以有一个构造函数来创建一个实例,但是当被调用时执行一个特定的函数吗

var Foo = function(){
    this.bar= "some variable";

   this.invokeFunction = function(){
        return this.bar;
    }
    return .... // what to do here
};

var foo = new Foo();

return foo;       // return the instance of Foo:  { bar: "some variable" }
return foo.bar; // returns "some variable"
return foo() ;    // returns "some variable"

在类函数中,返回一个返回所需内容的函数。比如说:

var Foo = function(){
    this.bar= "some variable";

   this.invokeFunction = function(){
        return this.bar;
    }
    return this.invokeFunction.bind(this);
}; 

你可以用这样的东西来伪装。Foo返回一个函数,该函数有一个指向自己原型的
\uuuuu proto\uuuu
。返回的函数是可调用的,是
Foo
的实例,可以访问实例属性:

var Foo=function(){
函数内部(){
console.log(“被调用”)
返回“已返回”
}
内部.\uuuu原型\uuuuu=Foo.prototype
internal.bar=“一些变量”;
返回内部
};
Foo.prototype.someFn=函数(){
log(“调用原型函数”)
把这个还给我
}
var foo=new foo();
log(foo instanceof foo)//它是foo的一个实例
console.log(foo.bar)//仍然可以访问实例变量
console.log(foo())//可调用!

console.log(foo.someFn())//使用`this`
的原型函数不需要返回任何内容
foo()
将抛出一个错误,因为它不是一个函数。您是否要求一个函数在使用/不使用
new
调用时表现不同?如果它有效,我希望您接受答案:)这实际上不起作用:
var f=new foo();console.log(f.bar)
-->未定义。