JavaScript继承和构造函数

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 () {

我试图理解JavaScript中的继承。我使用prototype将一个子类链接到它的父类。但一旦我定义了关系,父类的构造函数就开始运行

    <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”之类的。在那次讨论中,我没有强烈地选择立场,至少在这里没有