JS原型与继承

2023-12-28

在业余时间我尝试学习一点 JS,但我还是坚持主题中的主题。

var person = new Person("Bob", "Smith", 52);
var teacher = new Teacher("Adam", "Greff", 209);

function Humans(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

function Person(firstName, lastName, age) {
  Humans.call(this, firstName, lastName);
  this.age = age;
}

Person.prototype = Object.create(Humans.prototype);

Person.prototype.fullDetail = function() {
  return this.firstName + " " + this.lastName + " " + this.age;
};


function Teacher(firstName, lastName, roomNumber) {
  Humans.call(this, firstName, lastName);
  this.room = roomNumber;
}

Teacher.prototype = Object.create(Humans.prototype);

Teacher.prototype.fullDetail = function() {
  return this.firstName + " " + this.lastName + " " + this.room;
};

person.fullDetail();

谁能告诉我为什么我无法执行person.fullDetail();?

如果您能对您的代码版本发表一些评论,我将非常感激,谢谢。


因为您是在定义对象的原型之前创建对象的。

当你这样做时

var person = new Person ("Bob", "Smith", 52);

你正在根据以下内容制作一个对象current的定义Person。稍后在该代码中,您将更改原型Person完整地

Person.prototype = Object.create(Humans.prototype);

要解决此问题,请创建您的对象after您已经完成了原型的重新分配。

function Humans(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

function Person(firstName, lastName, age) {
  Humans.call(this, firstName, lastName);
  this.age = age;
}

Person.prototype = Object.create(Humans.prototype);

Person.prototype.fullDetail = function() {
  return this.firstName + " " + this.lastName + " " + this.age;
};


function Teacher(firstName, lastName, roomNumber) {
  Humans.call(this, firstName, lastName);
  this.room = roomNumber;
}

Teacher.prototype = Object.create(Humans.prototype);

Teacher.prototype.fullDetail = function() {
  return this.firstName + " " + this.lastName + " " + this.room;
};

var person = new Person("Bob", "Smith", 52);
var teacher = new Teacher("Adam", "Greff", 209);
console.log(person.fullDetail());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS原型与继承 的相关文章

随机推荐

  • 安装 SQL Server 2008 Developer 时要使用哪些帐户

    我在这里安装 SQL Server 2008 Developer 在安装的服务器配置步骤中 它询问我有关服务帐户的信息 我在这里选择什么 我可以在屏幕截图中看到可用的选项 尽管在大多数选项中我只能选择其中的两到三个 当我点击对所有 SQL
  • 如何防止 Tkinter 窗口在被调用之前打开?

    当我运行此脚本时 会出现两个窗口 一个用于文件选择 另一个窗口用于 Tkinter 窗口 如何更改此设置 以便 Tkinter 窗口仅在选择文件后打开 谢谢 def main my file askopenfilename stage1 d
  • 在通过桥接的 docker 容器中时无法访问 SSL IP。获取 SSL_ERROR_SYSCALL

    我在通过 IP TLS 连接到任何服务器时遇到问题 但仅在 默认 网桥中运行时从 Docker 容器内连接 我总是得到 OpenSSL SSL connect SSL ERROR SYSCALL in connection to W X Y
  • C# 中的 IPC,将文本从一个 exe 发送到另一个 exe

    我想将消息从 WPF 应用程序的文本框发送到打开的记事本 我的意思是 单击文本框旁边的按钮后 我希望将内容写入记事本 如何在两个不同的应用程序之间发送消息 DllImport user32 dll EntryPoint FindWindow
  • 有没有办法在运行时加载类 jar 和包?

    我想知道是否有办法在运行时加载类和jar 绝对 创建一个合适的ClassLoader实例 例如使用URL类加载器 http java sun com javase 6 docs api java net URLClassLoader htm
  • Pandas - Python - 如何减去两个不同的日期列

    尝试用今天的日期减去created date列来填充列 但出现以下错误 TypeError unsupported operand type s for str and str import datetime now datetime da
  • 连接 Haskell 和 C++

    我想在 C 程序中调用一些 Haskell 函数 为此 我已申请these https github com jarrett cpphs说明并将其调整为我的代码和系统 我目前所掌握的内容如下 主程序 cpp 共享头文件和cpp文件 make
  • 在 setup.cfg 中嵌套或组合 setuptools 的 extras_require

    是否可以重用已在中指定的依赖项 options extras require 对于其他条目 options extras require 举例来说 一个开发团队正在使用mypy在开发过程中检查它们的类型注释 以及black自动格式化他们的代
  • 我在哪里可以获得 VB6 IDE [重复]

    这个问题在这里已经有答案了 可能的重复 如何编译旧版 VB6 代码 https stackoverflow com questions 229868 how to compile legacy vb6 code 在哪里可以找到 VB6 的
  • 生成拼写错误的单词(打字错误)

    我已经实现了模糊匹配算法 我想使用一些带有测试数据的示例查询来评估其召回率 假设我有一个包含文本的文档 text The quick brown fox jumps over the lazy dog 我想看看是否可以通过测试诸如 sox
  • 如何在 CentOS 7 中安装 pip?

    CentOS 7 EPEL 现在包含 Python 3 4 yum install python34 然而 当我尝试这样做时 即使 Python 3 4 安装成功 它似乎也没有安装 pip 这很奇怪 因为pipPython 3 4 应该默认
  • 谷歌财经 API 从 2017 年 9 月 6 日起不再工作

    我使用谷歌金融 API 来获取股票报价并在我的网站上显示内容 从 2017 年 9 月 6 日起 此功能突然停止工作 我用来获取股票报价的网址是 以前 我使用的是雅虎财经 API 它不一致 所以 我切换到了谷歌金融API 你能帮我解决这个问
  • 在功能组件中使用回调来响应 setState

    我在类组件中编写了一个非常简单的示例 setErrorMessage msg this setState error message msg gt setTimeout gt this setState error message 5000
  • 更改 valueBoxes 的字体大小

    我想更改值的字体大小和副标题valueBoxes 以下是我的尝试 但对于如何以类似于默认外观的方式更改它的任何建议 我将不胜感激 下面是我的可重现的例子 require shinydashboard valueBox2 lt functio
  • 将表达式树解析为嵌套列表

    我对 F 比较陌生 在解析包含嵌套列表的表达式树时确实遇到了困难 根据网上的零碎资料 我拼凑了以下内容 我的标准类型定义为 type Return Real of float Func of string Return list 我对外部应
  • 将 bcrypt 添加到 package.json 时,如何解决使用 docker node alpine Image 时“找不到任何可使用的 Python 安装”的问题?

    在我将 bcrypt 添加到 package json 之前 一切正常 现在 我收到以下错误消息 这是我的 package json 的摘录 dependencies bcrypt 3 0 6 express 4 17 1 mongodb
  • 自定义属性:必须是明显我做错的事情

    我一直在添加不同实体的部分类 以毫无问题地添加各种有用的方法 根据我见过的示例 尝试添加属性似乎很简单 但我的失败得很惨 Updated例子 public List
  • 在javascript中识别firefox浏览器的选定选项卡URL

    我正在开发一个网络应用程序 我有兴趣获取选定的选项卡 URL 我正在使用火狐浏览器 我通过执行以下 javascript 语句实现了这一点 Get the URL of page which is currently loaded in a
  • 带 CASE 条件和 SUM() 的 SELECT 查询

    我目前正在使用这些sql语句 我的表有 CPaymentType 字段 其中包含 现金 或 支票 我可以通过执行 2 个 SQL 语句来汇总付款金额 如下所示 在这种情况下 用户甚至不会注意到执行2条sql语句或仅执行1条sql语句时的速度
  • JS原型与继承

    在业余时间我尝试学习一点 JS 但我还是坚持主题中的主题 var person new Person Bob Smith 52 var teacher new Teacher Adam Greff 209 function Humans f