2013-06-22 3 views
0

Я пытаюсь создать класс в JavaScript, который будет унаследован, и некоторые из его методов будут переопределены.Методы использования методов

Я использую следующую структуру:

function MyClass() 
{ 
    this.myvar = null; 
    this.someotherVar = { someFunction: function(a,b){ function1(a,b); }) 

} 

// some functions 
MyClass.prototype.functionA = function() {..} 
MyClass.prototype.functionB = function() {functionC();} 

//some functions that would be overrided 
MyClass.prototype.function1= function() {...} 
MyClass.prototype.functionC= function() {...} 

Теперь у меня есть 2 проблемы:

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

  2. Как связаться с function1 внутри someFunction с правой стороны?

+0

чрезвычайно расплывчатое название не будет полезным для будущих посетителей сайта с той же проблемой. –

ответ

1

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

Нет, вы просто должны называть его правильно:

function() { this.functionC(); } 
//   ^^^^^ 

в противном случае функция не будет найдена.

Конечно, вы также должны убедиться, что functionB вызывается только один раз functionC.

2. Как я могу связать function1 внутри someFunction в правильном направлении?

Небольшая проблема заключается в том, что someFunction не является методом экземпляра, а является другим объектом. Для того, чтобы по-прежнему называть правильный function1, вы можете сохранить ссылку на экземпляр в переменном:

function MyClass() { 
    var self = this; 
    this.myvar = null; 
    this.someotherVar = { 
     someFunction: function(a,b){ 
      self.function1(a,b); 
     } 
    }; 
} 
+0

отлично, что мне нужно было знать, как это сделать ... спасибо! –