繁体   English   中英

如何创建其中对象本身是函数的对象?

[英]How to create an object in which the object itself is a function?

我有一个javascript对象,是从构造函数创建的。

var obj = new Obj();

它具有多种功能,但我也希望如下使用它:

obj();

Obj定义为:

function obj() {
   this.blah = function () {
   };
}

我怎样才能做到这一点?

调用一个函数返回一个被视为对象和函数的任意函数会更容易。 每一个都是唯一的,并且您不需要使用new

function Obj() {
 var ret = function(){
  console.log('Hello');
 };
 ret.blah = function () {
   console.log('World');
 };
 return ret;
}

var obj = Obj();

obj();//Hello
obj.blah();//World

您可以在函数对象上创建属性。 例如,如果您具有

function foo() {
    return "bar";
}

您可以在foo上设置属性。

foo.baz = 42;

因此,现在您可以调用foo并获取结果"bar" ,并且可以访问其baz属性。

我认为您正在这里寻找“关闭”。 尝试:

function MyObject(/* constructor params */) {
   //assign properties to 'this'
   return function() {
      return this;  //<== placeholder implementation
   }.bind(this);
}
var obj1 = new MyObject();

现在,如果您执行console.log(obj1)您将看到function() { [...] }并且您将能够执行obj1()来执行您的功能。

作为上面代码的补充,我还在“关闭”中添加了this绑定,因为在大多数情况下,您需要做任何有趣的事情时都需要它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM