繁体   English   中英

有人可以向我解释为什么JavaScript的这种局限性行不通吗?

[英]Can someone explain to me why this inheiritance in javascript doesnt work?

<html>
<head>
<script>

function SuperClass()
{
    var self = this;
    self.someVariable = true;
}
function SubClass()
{
    var self = this;
    self.name = "Sub";
}
SubClass.prototype = SuperClass;

var sub = new SubClass();

alert("This is a sub class with name " + sub.name + " and variable " + sub.someVariable);

</script>
</head>
<body>
</body>
</html>

输出:

This is a sub class with name Sub and variable undefined

那么子类为什么没有someVariable? 我认为这就是原型制作的全部重点。

您只需将对SuperClass构造函数的引用分配给SubClass.prototype ,则需要使用new运算符使此SubClass.prototype对象成为SuperClass的实例:

//...
SubClass.prototype = new SuperClass();
//..

您可能要在上一行之后恢复SubClass.prototype对象的constructor属性,因为如果不这样做,使用SubClass创建的实例(例如您示例中的sub )将具有一个继承的constructor属性,错误地指向SuperClass

SubClass.prototype.constructor = SubClass;

在此处查看示例。

推荐文章:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM