2013-02-14 5 views
2

Я пытаюсь использовать ООП в javascript. То, что я пытаюсь,Простейшее наследование в javascript?

У меня есть 2 класса: classA и classB. Я наследую classA в классе B. Как:

function classA(){ 
    this.propA = "somevalue of A"; 
} 

function classB(){ 
    classB.prototype = new classA();    //inheriting 
    classB.prototype.constructor = classB;  //updating constructor defination 
    this.propB = "somevalue of B"; 
} 

Теперь я создал объект ClassB:

var classBObject = new classB(); 

и не пытаться получить доступ базового класса значение свойства с:

alert(classBObject.propA);  //here i am expecting "somevalue of A" 

но предупреждение показывает мне пустой. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно здесь?

+0

Javascript является [прототип на основе языка] (http://en.wikipedia.org/wiki/Prototype-based_programming), а не [ класс-язык] (http://en.wikipedia.org/wiki/Class-based_programming). Итак, технически нет классов. В Javascript объекты наследуются непосредственно от других объектов, в отличие от других языков на основе классов, где объекты наследуются от классов. В Javascript есть 5 типов: * String *, * Number *, * Boolean *, * Undefined * и * Null *. Все остальное является * объектом *. – Tuan

ответ

3

Переместить назначение прототипа ClassB вне конструктора:

function classA(){ 
    this.propA = "somevalue of A"; 
} 

function classB(){ 
    // classB.prototype.constructor = classB; 
    //^no need for this, constructor will be overwritten 
    // by classB.prototype = new classA 
    this.propB = "somevalue of B"; 
} 

classB.prototype = new classA; // assing prototype for classB here 
Смежные вопросы