Класс javascript наследуется от класса Function

Мне нравится это в javascript, я могу создать функцию, а затем добавить дополнительные методы и атрибуты к этой функции

myInstance = function() {return 5}
myInstance.attr = 10

Я хотел бы создать класс для создания этих объектов. Я предполагаю, что мне нужно унаследовать от базового класса Function.

Другими словами, я хотел бы:

var myInstance = new myFunctionClass()
var x = myInstance()
// x == 5

Но я не знаю, как создать myFunctionClass. Я пробовал следующее, но это не сработало:

var myFunctionClass = function() {Function.call(this, "return 5")}
myFunctionClass.prototype = new Function()
myInstance = new myFunctionClass()
myInstance()
// I would hope this would return 5, but instead I get
// TypeError: Property 'myInstance' of object # is not a function

Я также пробовал более сложный (и более подходящий?) Метод наследования, найденный здесь: Как «правильно» создать пользовательский объект в JavaScript? , больше не повезло. Я также пробовал использовать util.inherits (myFunctionClass, Function) из node.js. По-прежнему не повезло

Я исчерпал возможности Google и поэтому чувствую, что мне не хватает чего-то фундаментального или очевидного. Помощь будет принята с благодарностью.

12
задан Community 23 May 2017 в 12:22
поделиться