Muranx
@Muranx
кто понял this тот в цирке не смеётся

Как понять конструкцию this.prototype[name] =. . .?

Набрёл на пример в книге, в котором в прототип функций (всех) добавляется метод :
Function.prototype.method=function(name, func){
    this.prototype[name] = func;
    return this
};

Автор пишет "благодаря этому методу не нужно будет задавать имя свойства prototype

Я понимаю этот пример не полностью, поправьте меня если я не правильно рассуждаю :

1) В прототип функций добавляется метод method ( то-есть данный метод method будет доступен через цепочку [[prototype]] всем функциям)

2) this в этом коде указывает на функцию, к которой данный метод будет применяться (вызываться, к примеру foo.method)

3) Дальше каша. . . представим, что у нас есть foo( ){. . .}

- вызывая foo.method получается фраза this.prototype будет означать foo.prototype?

- что за таинственное свойство [name] имеется ввиду?
- и что в данном случае значит return this?

Если можете, приведите примеры использования данного метода, ну и конечно объясните мне мои вопросы, спасибо!
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
potapchino
@potapchino
1 - да
2 - да
3.1 - да
3.2 - Доступ через квадратные скобки
3.3 - ну например, чтобы можно было делать чейнинг. foo.method().method().method()...

Если можете, приведите примеры использования данного метода, ну и конечно объясните мне мои вопросы, спасибо!

например задание методов прототипа функции-конструктора:
Function.prototype.method = function(name, func){
    this.prototype[name] = func;
    return this
};

function Person(name) {
  this.name = name
}

Person
  .method('say', function() {
    console.log('dude!')
  })
  .method('myName', function() {
    console.log(this.name)
  });

var person = new Person('Alex')

person.say() // dude!
person.myName() // Alex
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы