как расширить классы JavaScript - PullRequest
2 голосов
/ 18 сентября 2010

Почему у дочернего класса нет метода echo ()?

Parent = function(){
    this.name = 'abc';
}

Parent.prototype.echo = function(){
    alert(this.name);
}

Child = function(){
    $.extend(this,  Parent);
}

var x = new Child();

x.echo();

Что я должен сделать, чтобы наследовать от родительского класса в Javascript?

Ответы [ 3 ]

7 голосов
/ 18 сентября 2010

Вам необходимо установить прототип Child в Parent.

function Parent() {
    this.name = 'abc';
}

Parent.prototype.echo = function () {
    alert(this.name);
}

function Child() {

}

Child.prototype = new Parent()

var x = new Child();

x.echo();
0 голосов
/ 18 сентября 2010
  • В javascript нет «классов», только объекты и прототипное наследование
  • Parent, Child не являются классами, они являются функциями (а также объектами)
  • Within Child«this» относится к глобальному объекту («окно» для браузеров)
  • use Child.prototype = new Parent()
0 голосов
/ 18 сентября 2010

Я предполагаю, что вы используете JQuery.Система расширений jQuery использует объекты, а не «классы», см .: http://api.jquery.com/jQuery.extend/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...