2014-12-19 5 views
0

Итак, я работаю над проектом, и я хочу иметь суперкласс класса, в котором хранятся методы и данные для нескольких страниц - страницы, имеющие свой собственный конструктор, который расширяет суперкласс сайта. В настоящее время у меня есть функция-конструктор, которая имеет собственные специальные методы для использования, которые используются на нескольких страницах. Что-то вроде этого:JavaScript-прототип суперкласса

function MyFeatureConstructor() { 
// some shared data for this feature 
}; 
MyFeatureConstructor.prototype.init = function (args) { 
// initialize 
} 
MyFeatureConstructor.prototype.clickEvent = function (e) {...} 
// other stuff specific to this feature 

function SomePageConstructor() { 
// shared data for this page 
} 
SomePageConstructor.prototype.init = function (args) { 
// initialize 
} 
SomePageConstructor.prototype.clickEvent1 = function (e) {...} 
// other stuff for this page 

Оттуда я их называю

var a = new MyFeatureConstructor; // call this on the same page as SomePageConstructor 
a.init(args) 
var b = new SomePageConstructor; 
b.init(args) 

За исключением 'MyFeatureConstructor' используется среди других страниц. Так что я не совсем уверен, как перенести его из собственной функции-конструктора в набор методов для класса сайта. Я думал о том, чтобы просто использовать методы и поместить их в конструктор суперкласса Site, но потом это может вызвать некоторые конфликты позже. Я также подумал о том, чтобы поместить их в простой объект, но тогда они не настолько эксклюзивны для самой функции, это больше похоже на кучу статических методов.

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

+0

Считаете ли вы, что требуется JS? Может быть, излишний, если у вас есть только этот пример, но, на мой взгляд, это стоит усилий в целом. – lrnzcig

ответ

1

Похоже, что этого не нужно делать с наследованием. Похоже, вы могли бы использовать вспомогательный объект, который содержит несколько функций, которые вам нужны для доступа к нескольким страницам. Вы можете сделать что-то вроде:

var myHelperFunctions = { 
    func1: function(){ your code here }, 
    func2: function(){ some other code here}; 
} 
+0

Хм, я думаю, это может сработать. –

Смежные вопросы