Я создаю класс с такой функцией
var Obj=function(){this.children=[];this.parent=null;}//a base class
Obj.prototype.index=function(child){
// the index of current obj
if(arguments.length==0){
return this.parent?this.parent.index(this):0;
}
// the index of a child matchs specific obj [to be override]
return -1;
}
в основном это просто функция перегрузки, состоящая из index () и index (child).
Затем я создаю подкласс SubObj или любой другой, наследуемый от Obj
SubObj.prototype.prototype=Obj;
Теперь пришло время переопределить функцию index (child), однако index () также есть в функции, и я не хочу ее перезаписывать.
Одно из решений - написать так
var Obj=function(){this.children=[];this.parent=null;}//a base class
Obj.prototype.index=function(child){
// the index of current obj
if(arguments.length==0){
return this.parent?this.parent.index(this):0;
}
// the index of a child matchs specific obj [to be override]
return this._index(this);
}
Obj.prototype._index=function(this){
return -1;
}
SubObj.prototype._index=function(this){/* overwriteing */}
Но это может легко ввести в заблуждение другие кодеры, так как _index (дочерний) должен быть как закрытым (не должен использоваться, кроме функции index ()), так и общедоступным (это функция перегрузки index (), которая является публичной)
У вас, ребята, есть идея получше?