Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建对象本身是函数的对象?_Javascript - Fatal编程技术网

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

Javascript 如何创建对象本身是函数的对象?,javascript,Javascript,我有一个javascript对象,从中我通过构造函数创建了它 var obj = new Obj(); 它有几个功能,但我也希望使用它如下 obj(); Obj的定义如下: function obj() { this.blah = function () { }; } 如何实现这一点?如果调用一个函数,该函数将返回一个被视为对象和函数的任意函数,这样会更容易。每一个都是唯一的,您不需要使用new function Obj() { var ret = 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

如果您调用一个函数,它将返回一个被视为对象和函数的任意函数,这会更容易。每一个都是唯一的,您不需要使用
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 foo() {
    return "bar";
}
您可以在
foo
上设置属性

foo.baz = 42;

因此,现在您可以调用
foo
并获得结果
“bar”
,您可以访问它的
baz
属性。

我想您正在这里寻找“闭包”。 尝试:

函数MyObject(/*构造函数参数*/){
//将属性分配给“this”
返回函数(){

返回此;//我认为您正在寻找“结束”。 尝试:

函数MyObject(/*构造函数参数*/){
//将属性分配给“this”
返回函数(){

返回此;//似乎是XY问题,为什么要这样做?函数是对象,因此可以创建函数并向其中添加属性。您不能做的是创建一个对象,然后神奇地将其转化为函数似乎是XY问题,为什么要这样做?函数是对象,因此可以创建函数并向其中添加属性你不能做的是创建一个对象,然后神奇地把它变成一个函数