Это допустимо.
Как и другие заявили, здесь нет проблем, связанных с прототипом.
Вы присоединяете 2 свойства к 2 различным объектам:
- так называемым "статическая функция присоединена к определению функции (F)
- , так называемая «публичная» функция присоединена к объекту, возвращенному конструктором (new F ())
, поскольку F !== new F()
, это две разные вещи с разными реквизитами.
Если вы хотите использовать наследование прототипа, вы можете рассмотреть следующий пример:
var F = function(){}
// function visible to all of F's instances
F.prototype.f1 = function(){console.log("I'm inherited!");}
// a so called "static" function
F.f1 = function(){console.log("I'm static!");}
var instance1 = new F();
var instance2 = new F();
// function visible only to this instance of F
instance1.f1 = function(){console.log("I'm visible only to this instance of F");}