[英]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.