Size: a a a

JavaScript Noobs — сообщество новичков

2020 July 08

A

An in JavaScript Noobs — сообщество новичков
Danila
Биндом нельзя поменять поле
const person = {
 surname: 'Старк',
 knows: function (what, name) {
   console.log(Ты ${what} знаешь, ${name} ${this.surname})
 }
}

const john = { surname: 'Сноу' }
person.knows.call(john, 'ничего не', 'Джон')

Мне нужно сделать то же самое только с той функцией
источник

D

Danila in JavaScript Noobs — сообщество новичков
An
const person = {
 surname: 'Старк',
 knows: function (what, name) {
   console.log(Ты ${what} знаешь, ${name} ${this.surname})
 }
}

const john = { surname: 'Сноу' }
person.knows.call(john, 'ничего не', 'Джон')

Мне нужно сделать то же самое только с той функцией
Делай. Биндом ты и создал функцию, которая теперь прибита к новому контексту (который теперь у тебя вместо кучи полей содержит одно)
источник

D

Danila in JavaScript Noobs — сообщество новичков
Вызывай её и всё
источник

D

Danila in JavaScript Noobs — сообщество новичков
An
const person = {
 surname: 'Старк',
 knows: function (what, name) {
   console.log(Ты ${what} знаешь, ${name} ${this.surname})
 }
}

const john = { surname: 'Сноу' }
person.knows.call(john, 'ничего не', 'Джон')

Мне нужно сделать то же самое только с той функцией
Ты тут не поле меняешь, ты меняешь весь контекст.
источник

D

Danila in JavaScript Noobs — сообщество новичков
И ещё раз призываю никогда не заниматься ничем подобным в реальном коде
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
Danila
Если ты хочешь использовать функцию в другом контексте - вынь её из объекта
что значит "вынуть"?
функция и так "вне" объекта. тут просто поле объекта ссылается на анонимную функцию. но это не значит, что функция как то с ним связана. она ничего не знает о этом объекте
источник

D

Danila in JavaScript Noobs — сообщество новичков
Глеб Щукин
что значит "вынуть"?
функция и так "вне" объекта. тут просто поле объекта ссылается на анонимную функцию. но это не значит, что функция как то с ним связана. она ничего не знает о этом объекте
Хочешь сам с ним побеседовать?
источник

D

Danila in JavaScript Noobs — сообщество новичков
Я прекрасно знаю что такое бинды и как они работают
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
дай понудеть то
источник

D

Danila in JavaScript Noobs — сообщество новичков
Вынуть я имею ввиду прямо в коде
источник

D

Danila in JavaScript Noobs — сообщество новичков
Нафига объявлять её в составе какого-то объекта класса или функции, если потом ты её тут же куда-то биндишь и юзаешь вообще в другом месте
источник

A

An in JavaScript Noobs — сообщество новичков
либо я не так делаю, либо вы не шарите))
источник

D

Danila in JavaScript Noobs — сообщество новичков
Это не программирование, это шиза
источник

D

Danila in JavaScript Noobs — сообщество новичков
An
либо я не так делаю, либо вы не шарите))
Ты не можешь нормально объяснить
источник

D

Danila in JavaScript Noobs — сообщество новичков
Последний пример который ты скинул
источник

D

Danila in JavaScript Noobs — сообщество новичков
Функция вызывается в другом конткесте через call
источник

D

Danila in JavaScript Noobs — сообщество новичков
Ну и?
источник

D

Danila in JavaScript Noobs — сообщество новичков
Хочешь вызвать в другом контексте - вызывай через call/apply. хочешь получить копию функции с уже прибитым к ней новым контекстом - прибивай через bind и вызывай результат
источник

D

Danila in JavaScript Noobs — сообщество новичков
Хочешь старый метод объекта заменить на новый который является прибинженой копией старой
источник

D

Danila in JavaScript Noobs — сообщество новичков
Так и делай obj.method = obj.method.bind()
источник