Class.method = function() {};
Это было бы просто добавить method
свойство на функцию конструктора Class
. Функции - это объекты и могут хранить данные так же, как и любые другие объекты. Однако причина, по которой не будет добавлена функция method
в Class
, проста: Это не то, как прототипное наследование реализовано в JavaScript.
Вы должны прочитать о What is the 'new' keyword in JavaScript?, и вы поймете, как настраивается цепочка прототипов и почему добавление элементов в конструктор не влияет на экземпляры, созданные с помощью этого конструктора.
Я думаю, что также стоит отметить, что ClassSub.prototype = new Class();
не является эффективным способом настройки цепи прототипа, так как он будет запускать код конструктора Class
.
В современных браузерах вы можете просто использовать Object.create
и есть прокладка для старых браузеров.
ClassSub.prototype = Object.create(Class.prototype);
Этот синтаксис рассматривает класс как обычный объект функции, а не в качестве конструктора экземпляров объектов класса. –
@Jeffman - сообщите пожалуйста. на что вы указываете (ссылаетесь)? – ncm
что ты спрашиваешь? вы говорите, в чем причина использования 'classname.prototype.methodname' и почему мы не используем' classname.methodname'? – ncm