我在写一个简单的使用javascript和html5的平台游戏。我以OO方式使用JavaScript。为了继承工作我使用以下;Javascript继承 - instanceof不能正常工作?
// 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!');
据我了解,我希望看到一个horray警告框,因为C是C^& B中的实例& A.难道我错了吗?或者我只是使用错误的方法来检查?或者有copyPrototype捣乱运算符的instanceof?
非常感谢您花时间阅读本文!
肖。
嘿j03m,你说得对 - 现在这将是一个非常棒的解决方案,但现在这个问题已经很老了,并且当时对object.create没有广泛的支持,因为这是一个ECMA脚本的新功能。5 – Shawson 2014-08-07 08:44:32
ah给自己留言,读取时间戳。 – j03m 2014-08-07 12:15:05
有一个最新的答案参考! :) – Shawson 2014-08-08 08:30:07