У вас есть функция, которая возвращает значение объекта, а не класс JS.
Вы захотите проверить, используя DataSource.prototype
, и вы должны добавить свойства или изменить this
в вашем конструкторе, если вы хотите использовать это вместе с new
Вы, вероятно, должны делать что-то вроде этого:
function DataSource(src, extension){
//Make sure this behaves correctly if someone forgets to use new
if (! this instanceof DataSource)
return new DataSource(src,extension);
//store the constructor arguments
//so you can use them in the shared methods below
this._src=src;
this._extension=extension;
}
DataSource.prototype.exists=function(){
//use this._src and this._extension here
//This method will be available to all
//objects constructed by new DataSource(...)
};
DataSource.prototype.get=function(){
//use this._src and this._extension here
//This method will be available to all
//objects constructed by new DataSource(...)
};
var instance = new DataSource('a source','an extension');
Редактировать: Вы упоминали, что предпочли бы «частные» переменные
Построение замыканий - это единственный переносимый способ имитации частных свойств, однако, по моему опыту, перед ними ставим префикс _
и в вашей организации существует соглашение не полагаться на префиксные переменные _
в большинстве ситуаций