var test = function() {
console.log('Test');
};
test.property = 'Свойство';
test.__proto__.secondTest = function() {
console.log('Test second');
};
test(); //Выведет Test
test.secondTest(); //Выведет Test second
console.log(test.property); //Выведет Свойство
Вот желаемый результат, он работает.
Однако прототип тут цепляется через __proto__, что не кроссбраузерно (повторяюсь уже который раз
), а чтобы сделать кроссбраузерно, надо прототип цеплять к функии конструктор. А вот как сделать через конструктор, я и не пойму.
Пример, не работающий:
function factoryTest() {
return function() {
cconsole.log('Test');
};
}
function factoryTestInit()
{
var test = new factoryTest();
test.propetry = 'Свойство';
console.log([test]); //выведет массив, где 0 элементом будет функция из конструктора, однако функции secondTest из прототипа тут не будет
return test;
}
factoryTest.prototype.secondTest = function() {
console.log('Test second');
};
var testObj = new factoryTestInit();
testObj(); //Выведет Test
testObj.secondTest(); //ХОЧУ ЧТОБЫ МЕТОД ВЫПОЛНИЛСЯ, НО ТУТ БУДЕТ ОШИБКА, ЧТО ТАКОЙ ФУНКЦИИ НЕТ
console.log(testObj.property); //Выведет Свойство
Извиняюсь за капс, он для наглядности.