Показать сообщение отдельно
  #3 (permalink)  
Старый 21.05.2013, 10:05
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

А у экземпляров Numbering-то setNumber вызывается?

Вы, вероятно, сначала описываете Numbering и его прототип, а потом наследуетесь. Так делать неправильно, ибо extend перезаписывает прототип.
var oop = {
extend: function (Child, Parent) {
  var F = function () {};
  F.prototype = Parent.prototype;
  Child.prototype = new F();
  Child.prototype.constructor = Child;
  Child.superclass = Parent.prototype;
  this.mixin(Child, Parent);
},
/**

 * @param {type} dst
 * @param {type} src
 * @returns {undefined}
 */
mixin: function (dst, src) {
  var tobj = {};
  for (var x in src) {
    if ((typeof tobj[x] == "undefined") || (tobj[x] != src[x])) {
      dst[x] = src[x];
    }
  }
  if (document.all && !document.isOpera) {
    var p = src.toString;
    if (typeof p == "function" && p != dst.toString && p != tobj.toString &&
      p != "\nfunction toString() {\n    [native code]\n}\n") {
      dst.toString = src.toString;
    }
  }
}
};

function netBuilder() {

}

function Numbering() {

}
*!*
oop.extend(Numbering, netBuilder);
*/!*
 // важно отнаследоваться здесь, а не после объявления прототипа!

Numbering.prototype.setNumber = function() {
  alert('Numbering#setNumber');
}

function NumberingMethodDefault() {

}
oop.extend(NumberingMethodDefault, Numbering);

new NumberingMethodDefault().setNumber();

Последний раз редактировалось B@rmaley.e><e, 21.05.2013 в 10:52.
Ответить с цитированием