Почему не видит функцию из прототипа?

95
22 ноября 2019, 09:20

Решил написать свой полифил для bind, функцию, которую оборачивать, планирую брать из this. Но получаю ошибку, что не видит мою функцию, что я записал в прототип.

function func1() {
    console.log(func1.prototype);
}
func1.prototype.bind2 = function (){
    var func = this;
    console.log(func);
};
var obj = {
    a: "a"
};
func1();
func1.bind2();

Answer 1

Если вы добавляете функцию через prototype, то эта функция будет доступна после создания объекта. Если вам нужно вызывать функцию без использования оператора new, то добавьте ее к функции также, как к объекту.

function func1() { 
  console.log('func1'); 
} 
 
func1.bind = function() { 
  console.log('bind'); 
}; 
 
func1.prototype.bind2 = function() { 
  console.log('bind2'); 
}; 
 
func1(); 
func1.bind(); 
 
var f = new func1(); 
f.bind2();

READ ALSO
Как в цикле узнать дистанции

Как в цикле узнать дистанции

Задача,- узнать дистанции до точки, от нескольких "пунктов отправления"Есть,- массив координат точек А которые в цикле и перебираются, и неизменная...

115
Перебор Object.keys, потеря объектов на выходе

Перебор Object.keys, потеря объектов на выходе

Передаю в функцию json файл c 4 объектами на выход получаю только 3 внутри функции все 4 объектаКуда теряется 2 объект?

89
Практика использования setTimeout [закрыт]

Практика использования setTimeout [закрыт]

Я столкнулся с тем, что мои реализации на основе setTimeout очень нестабильны

104
не работает скрипт, ошибок консоль не выдает, все другие скрипты работают

не работает скрипт, ошибок консоль не выдает, все другие скрипты работают

Нужно менять содержимое дива, когда окно меньше 540px

99