JavaScript继承和构造函数
我试图理解JavaScript中的继承。我使用prototype将一个子类链接到它的父类。但一旦我定义了关系,父类的构造函数就开始运行JavaScript继承和构造函数,javascript,oop,inheritance,Javascript,Oop,Inheritance,我试图理解JavaScript中的继承。我使用prototype将一个子类链接到它的父类。但一旦我定义了关系,父类的构造函数就开始运行 <script type="text/javascript"> function Person () { window.alert('We\'ve got a new person!'); } function King () {
<script type="text/javascript">
function Person ()
{
window.alert('We\'ve got a new person!');
}
function King ()
{
window.alert('We\'ve got a new king!');
}
King.prototype = new Person();
//King.prototype.constructor = King;
//var erik = new King();
</script>
职能人员()
{
window.alert('我们有了一个新人!');
}
函数王()
{
window.alert(“我们有了一个新国王!”);
}
King.prototype=新人();
//King.prototype.constructor=King;
//var erik=新国王();
在JavaScript中使用继承的正确方法是什么
开始混淆的教程:这是因为Javascript是一种原型语言,实际上不支持以这种方式继承。它的对象是松散的类型,可以动态扩展额外的函数和属性 实际上,您要做的是创建Person的
实例
,然后可以使用额外的方法对其进行扩展
《图图里亚尔宣言》指出:
在JavaScript中,可以通过分配父类的实例来实现这一点
给孩子上课,然后专攻它
如果你习惯于真正的(基于类的)OO,那就相当令人困惑了。这是因为Javascript是一种原型语言,并不真正支持这种继承方式。它的对象是松散的类型,可以动态扩展额外的函数和属性 实际上,您要做的是创建Person的
实例
,然后可以使用额外的方法对其进行扩展
《图图里亚尔宣言》指出:
在JavaScript中,可以通过分配父类的实例来实现这一点
给孩子上课,然后专攻它
如果你已经习惯了真实的(基于类的)OO,那就相当令人困惑了。也要检查“但是一旦我定义了关系,父类的构造函数就开始运行了。”那么,当你编写
new Person()
时,你期望会发生什么呢?我看这里没有问题<代码>[按设计工作]供未来读者使用;下面的文字让我理解了JavaScript继承背后的思想:---即使它被用作原型,父对象仍然可以作为常规对象进行操作。这是原型与类的主要区别---JavaScript中的所有对象都可以在运行时修改。因为原型对象也是常规对象,所以我们也可以修改它们。但是,当您修改一个原型对象时,它的更改也会反映到它的所有子对象上。请同时选中“但是一旦我定义了关系,父类的构造函数就会开始运行”。那么,当您编写new Person()
时,您希望发生什么?我看这里没有问题<代码>[按设计工作]供未来读者使用;下面的文字让我理解了JavaScript继承背后的思想:---即使它被用作原型,父对象仍然可以作为常规对象进行操作。这是原型与类的主要区别---JavaScript中的所有对象都可以在运行时修改。因为原型对象也是常规对象,所以我们也可以修改它们。然而,当你修改一个原型对象时,它所做的更改也会反映到它的所有子对象上。非常令人困惑:s但是我需要在这里再次检查。很难想象这是设计完成的…@Golez——有人会说Javascript/Scheme是真正的OO,基于类的东西只是一个苍白的副本。@JeremyJStarcher我知道。我应该在引号里加上“real”之类的。在那次讨论中,我没有强烈地选择立场,至少在这里没有非常混乱:是的,但我需要在这里再次检查。很难想象这是设计完成的…@Golez——有人会说Javascript/Scheme是真正的OO,基于类的东西只是一个苍白的副本。@JeremyJStarcher我知道。我应该在引号里加上“real”之类的。在那次讨论中,我没有强烈地选择立场,至少在这里没有