Извлечение метода в Javascript - PullRequest
0 голосов
/ 30 мая 2018

Я узнал, что если я хочу извлечь метод из этого примера.

var jane={
name:'jane', 
describe:function(){
  return 'Person named '+this.name;
    }
};

Я не могу сделать следующее.

var func =jane.describe;
func();

Как это не работает, почему это не работает?Также мне сказали, что решение выглядит следующим образом:

var func =jane.describe.bind(jane);
func();

Я не понимаю, что это за свойство "bind" функций и почему "jane" передается в свойство bind?

1 Ответ

0 голосов
/ 30 мая 2018

Это не будет работать, потому что контекст this изменяется.Когда вы используете связывание, вы передаете объект jane в bind, а затем, когда вы вызываете describe и он использует this, он ссылается на jane.

Согласно документации:

Метод bind () создает новую функцию, которой при вызове присваивается ключевое слово this с указанным значением, причем заданная последовательность аргументов предшествует любому из предоставленных при вызове новой функции.

Материал для чтения

bind

...