В JavaScript, определяя classlike (конструктор) метод функции обычно делается так:Использование «this.prototype» против внешнего «constructor.prototype» в ООП
function Class1() {
// ... code ...
}
Class1.prototype.method1 = function(args) {
// ... code ...
};
И идя общий синтаксис/семантика правил ECMAScript, нет никаких причин, я не мог отменить/изменить/продлить первоначальный Object.prototype с
function Class1() {
// ... code ...
this.prototype.method1 = function(args) {
// ... code ...
};
}
Тогда почему это не сделано таким образом? Код выглядел бы немного более запутанным, но намного быстрее и чище писать и читать (помещая все методы, связанные с Class1, прямо под Class1). Разве это не было бы лучше использовать?
Ваш второй пример кода не будет работать. Значение 'this' внутри конструктора * не * функция-конструктор; это значение вновь созданного объекта. – Pointy
Тогда я мог бы получить доступ к нему через 'this.constructor'? Я мог бы также отредактировать мой вопрос. – gchiconi
Конструктор запускается для * каждого * объекта, созданного экземпляром. Вы добавляете новый набор идентичных функций к своему прототипу каждый раз, когда вы строите новый объект, который имеет очень большие последствия для производительности. – meagar