gpt4 book ai didi

javascript - 有人可以向我解释为什么 javascript 中的这种继承不起作用吗?

转载 作者:行者123 更新时间:2023-12-02 20:35:49 26 4
gpt4 key购买 nike

<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 呢?我认为这就是原型(prototype)设计的全部意义。

最佳答案

您只需将对 SuperClass 构造函数的引用分配给 SubClass.prototype,您需要使用 new 运算符来实现此操作SubClass.prototype 对象是 SuperClass 的实例:

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

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

SubClass.prototype.constructor = SubClass;

查看示例 here .

推荐文章:

关于javascript - 有人可以向我解释为什么 javascript 中的这种继承不起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3286870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com