Класс внутри класса с использованием прототипа ООП - PullRequest
0 голосов
/ 15 марта 2011

У меня есть следующий код:

function A(){
    this.init.apply( this, arguments );
}

A.prototype = {

    name: "",

    init: function( nameOfSomething ){

        this.name = nameOfSomething;

    }

};

Таким образом, я могу использовать:

var something = new A();

И я хочу добавить еще один класс в классе «А». Как Б.

Я хочу использовать:

something.B = new B();

something.B.name = "testing";

B, имеющий любые свойства и методы, которые я хочу!

Кто?

1 Ответ

1 голос
/ 15 марта 2011

Если вы хотите «расширить» объект «класса» A (и у javascript нет классов, и вы обожжетесь, если будете действовать так, как если бы он действовал), выполните [untested]:

function B () {}
B.prototype = new A();
B.prototype.init("bla");

var b = new B();
b.name; /* should return "bla" */

Но я вполне уверен, что на самом деле это не делает то, что вы хотите / ожидаете. См. http://joost.zeekat.nl/constructors-considered-mildly-confusing.html для моей попытки объяснить общий механизм и его подводные камни.

...