Skip to content

Instantly share code, notes, and snippets.

@VingeB0
Created March 29, 2018 19:44
Show Gist options
  • Save VingeB0/2fc87d6a777a9258c7d83c580643a883 to your computer and use it in GitHub Desktop.
Save VingeB0/2fc87d6a777a9258c7d83c580643a883 to your computer and use it in GitHub Desktop.
bind возвращает новую ф-ю обертку
полифил bind
funtionc bind(cb, context) {
return function() {
return cb.apply(context, arguments)
}
}
как сделать чтобы вывелось с 1 до 10
for (var i=0; i<10; i++) {
settimeout(function() {
console.log(i);
}, i*1000);
}
es6 - var на let создается блочная переменная и каждый i каждый раз нвоый
3й способ самовызывающая ф-я
for (var i=0; i<10; i++) {
settimeout(function() {
return function() {console.log(i);}
})(1), i*1000);
}
proto и prototype
proto прототипное наследование это тайная связь есть у каждого обьекта жс, которая наследует свйоства и методы, ищет по ссылке proto
ищет эти свойста не находит в обьекте и ищет по сыллке прото пока не найдет до самого верха
только на чтение работает
prototype это свойство которое есть у ф-и, это свойство на которое будет установлена ссылка у прото того нового обьекта
когда пользуемся ф-ей конструктара чтоб создать много обьектов у всех обьектов ссылка протос сылается на конструктор этот прототайп, то есть наследники не содержат свои методы а наследуют и этим экономим память, наследуют по прототипной цепочке
var obj = { a: 5 b: { c:10} };
obj.proto = { a:10, b: {c : 20} };
delete obj.a; conslog(obj.a) - удалит с обж аи выведет 10
delete obj.a; conslog(obj.a) - попытается удалить но там нет обьекта, а прото только на чтение а там 10 выведет
delete obj.b; conlog(obj.b.c) - удаляет б и выведет 20 из прото
delete ob.v.c conslog(obj.b.c) - выведет 20
sum = (a,b,c) => a+b+c;
function curry(cb) {
let finalArgs = [];
function fyc() {
for(let i = 0; i < arguments.length; i++){
finalArgs.push(arguments[i])
}
if (finalArgs.length === cb.length) {
return cb.apply(this, finalArgs);
} else {
return fyc;
}
}
return fyc;
}
console.log(curry(sum)(1)(2)(3))
console.log(curry(sum)(3, 2)(3))
console.log(curry(sum)(1, 7, 3))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment