<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?我认为这就是原型制作的全部要点。
答案 0 :(得分:2)
您只是将SuperClass
构造函数的引用分配给SubClass.prototype
,您需要使用new
运算符使此SubClass.prototype
对象成为{{{}的实例1}}:
SuperClass
您可能希望在上一行之后恢复//...
SubClass.prototype = new SuperClass();
//..
对象的constructor
属性,因为如果您不这样做,则使用SubClass.prototype
创建的实例(如{{ 1}}在您的示例中)将有一个继承的SubClass
属性错误地指向sub
:
constructor
查看示例here。
推荐文章: