-
-
Save VingeB0/2fc87d6a777a9258c7d83c580643a883 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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