Показать сообщение отдельно
  #7 (permalink)  
Старый 17.06.2015, 16:53
Новичок на форуме
Отправить личное сообщение для Splik Посмотреть профиль Найти все сообщения от Splik
 
Регистрация: 26.02.2014
Сообщений: 7

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); //Выведет Свойство

Извиняюсь за капс, он для наглядности.

Последний раз редактировалось Splik, 17.06.2015 в 16:58.
Ответить с цитированием