Что есть prototype?

BRat

o_0
Что есть prototype?

У каждого обьекта есть прототип, через который можно добавить обьекту свойств и методов. В одной книге обнаружил что некоторые методы обьекта вызываются через него же, т.е. так -
PHP:
function Triangle(fBase, fHeight) {
            Polygon.call(this, 3);
            this.base   = fBase;
            this.height = fHeight;

            if (typeof Triangle._initialized == "undefined")
            {
                Triangle.prototype.inheritFrom('Polygon');
                Triangle.prototype.getArea = function() { return 0.5*this.base*this.height;};
            }
        }
вот эта строка - Triangle.prototype.inheritFrom('Polygon'); (inheritFrom - это метод класса Object, добавленный в него с помощью биботеки). Почему вызывается этот метод через prototype, в чем отличие от просто вызова Triangle.inheritFrom('Polygon') ?
 

SelenIT

IT-лунатик :)
Насколько понимаю я: метод прототипа автоматом доступен во всех объектах, созданных данным конструктором, а метод объекта создается заново для каждого экземпляра (с соответствующим расходом памяти и т.п.).
 

master_x

Pitavale XXI wieku
BRat
именно так как сказал Selen-IT. если у тебя уже есть объекты и ты хочешь к ним ко всем добавить определенный метод, то используй prototype, если хочешь добавить метод конкретному экземпляру, то добавляй без prototype.
вот руководство в котором все по этой теме: http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide
 

BRat

o_0
SelenIT
во, теперь понял. Так как этот метод добавляет новые методы в обьект, то его лучше вызывать через прототип. Спасибо )
master_x
хорошая ссылка, сенкс
 
Сверху