JavaScript 继承和构造函数

标签 javascript oop inheritance

我正在尝试理解 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>

在 JavaScript 中使用继承的正确方法是什么?

引发困惑的教程:https://developer.mozilla.org/en-US/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript

最佳答案

那是因为 Javascript 是一种原型(prototype)语言,并不真正支持这种方式的继承。它的对象是松散类型,可以动态扩展额外的功能和属性。

因此,您实际上要做的是创建 Person 的实例,然后可以使用额外的方法对其进行扩展。

教程说明了这一点:

In JavaScript you do this by assigning an instance of the parent class to the child class, and then specializing it.

如果您习惯于真正的(基于类的)面向对象,那么这会相当令人困惑。

关于JavaScript 继承和构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222420/

相关文章:

javascript - 如何让输入类型="password"在输入后或1秒后显示值

php - 根据用户输入的 Ghost/unghost 字段

c++ - 基于集合派生对象中存在的类型选择行为的模式

javascript - JavaScript 中的多态性具有不同的构造函数

php - 有没有更好的代码(MySql 或 PHP),我可以在一个语句或查询中获取两个表?

inheritance - 在 Scala 中调用父类(super class)构造函数的正确方法是什么?

javascript - 防止 jQuery 操作在滚动时第二次发生

javascript - 测试和比较 jQuery 插件的性能

c++ - 模板内的继承 - 公共(public)成员变得不可见?

java - Android - 如何强制 child 覆盖具有代码的父方法