![](/img/trans.png)
[英]JavaScript function which acts on itself to extend itself with another object
[英]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.