Я использую автономное наследование классов прототипа: https://github.com/Jakobo/PTClass
И у меня есть следующие классы:
App.hello = Class.create({
initialize: function(args) {
this.name = args.name
},
sayHello: function() {
console.log('Hello, ' + this.name);
},
sayGoodbye: function() {
console.log('Goodbye, ' + this.name);
}
});
App.yo = Class.create(App.hello, {
initialize: function($super) {
$super();
},
sayHello: function() {
console.log('Yo, ' + this.name);
}
});
Где идея состоит в том, что yo
наследуется от hello
и переопределяет его метод sayHello
. Но также иметь возможность вызывать метод sayGoodbye
в своем родительском классе.
Поэтому я называю их так:
var test = new App.hello({name: 'Cameron'});
test.sayHello();
test.sayGoodbye();
var test2 = new App.yo({name: 'Cameron'});
test2.sayHello();
test2.sayGoodbye();
Однако я получаю сообщение об ошибке, что Uncaught TypeError: Cannot read property 'name' of undefined
для моего класса yo
.
Как мне правильно наследовать от моего класса hello
?
Class
материал PrototypeJS устарел, и в наши дни PrototypeJS практически не поддерживается. Вам лучше изучить новый синтаксисclass
, представленный в ES2015 (он же ES6), и при необходимости транспилировать его для старых браузеров. - person T.J. Crowder   schedule 14.02.2017