Я пишу простую платформенную игру, используя javascript и html5. Я использую javascript в манере OO. Чтобы получить наследование, я использую следующее:
// http://www.sitepoint.com/blogs/2006/01/17/javascript-inheritance/
function copyPrototype(descendant, parent) {
var sConstructor = parent.toString();
var aMatch = sConstructor.match(/\s*function (.*)\(/);
if (aMatch != null) { descendant.prototype[aMatch[1]] = parent; }
for (var m in parent.prototype) {
descendant.prototype[m] = parent.prototype[m];
}
};
Для этого поста рассмотрим следующий пример:
function A() {
this.Name = 'Class A'
}
A.prototype.PrintName = function () {
alert(this.Name);
}
function B() {
this.A();
}
copyPrototype(B, A);
function C() {
this.B();
}
copyPrototype(C, B);
var instC = new C();
if (instC instanceof A)
alert ('horray!');
Как я понимаю, я бы ожидал увидеть окно предупреждения об ужасах, потому что C является экземпляром C и B и A. Я ошибаюсь? Или я использую неправильный метод для проверки? Или имеет copyPrototype намотал экземпляр оператора?
Спасибо, как всегда за то, что нашли время, чтобы прочитать это!
Шоу.