это возможный моделировать абстрактный базовый класс в JavaScript?
, Конечно. Существует приблизительно тысяча способов реализовать системы класса/экземпляра в JavaScript. Вот тот:
// Classes magic. Define a new class with var C= Object.subclass(isabstract),
// add class members to C.prototype,
// provide optional C.prototype._init() method to initialise from constructor args,
// call base class methods using Base.prototype.call(this, ...).
//
Function.prototype.subclass= function(isabstract) {
if (isabstract) {
var c= new Function(
'if (arguments[0]!==Function.prototype.subclass.FLAG) throw(\'Abstract class may not be constructed\'); '
);
} else {
var c= new Function(
'if (!(this instanceof arguments.callee)) throw(\'Constructor called without "new"\'); '+
'if (arguments[0]!==Function.prototype.subclass.FLAG && this._init) this._init.apply(this, arguments); '
);
}
if (this!==Object)
c.prototype= new this(Function.prototype.subclass.FLAG);
return c;
}
Function.prototype.subclass.FLAG= new Object();
кошка var = новое Животное ('кошка');
Это не действительно абстрактный базовый класс, конечно. Сделайте Вы имеете в виду что-то как:
var Animal= Object.subclass(true); // is abstract
Animal.prototype.say= function() {
window.alert(this._noise);
};
// concrete classes
var Cat= Animal.subclass();
Cat.prototype._noise= 'meow';
var Dog= Animal.subclass();
Dog.prototype._noise= 'bark';
// usage
var mycat= new Cat();
mycat.say(); // meow!
var mygiraffe= new Animal(); // error!
Я использую атрибут ScriptIgnore в моей модели следующим образом:
public class Item
{
[ScriptIgnore]
public Item ParentItem { get; set; }
}
В этом конкретном сценарии я получал ошибку циклической ссылки от сериализатора Json, поэтому я просто проигнорировал ее. Я задавал аналогичный вопрос здесь, на SO , когда меня заинтересовала разница между моделью и ViewModel.