我想要的是这样的:
var fnc = new constructor(); // --> function()...
fnc(); // --> Running main function
fnc.method(); // --> Running method
这样就可以创建新fnc
实例,同时在构造函数原型中拥有方法。但是,我似乎无法将构造函数的结果作为函数,因为无论返回子句如何,它似乎都变成了一个对象,导致..
Uncaught TypeError: Property 'fnc' of object [object Object] is not a function
:(
编辑:添加了示例代码。所以我的想法是沿着这些思路。
var constructor = function() { return function() { console.log('Running main function.') }; };
constructor.prototype.method = function() { console.log('Running method.'); }
var fnc = new constructor();
console.log('constructor: ', constructor);
console.log('fnc: ', fnc);
console.log('fnc.method: ', typeof $.method);
console.log('');
fnc();
fnc.method();
在这种情况下,一个人得到...
Uncaught TypeError: Object function () { console.log('Running main function.') } has no method 'method'
...错误,因为构造函数提供的函数与构造函数本身不同,原型链附加在其上。只是似乎无法解决这个问题。用 jQuery 做了一个版本,比如初始化,这很好,但我后来发现它最终是通过空函数原型来完成的,这意味着每个函数都有方法。