javascript - 从另一个构造函数继承是否会覆盖继承构造函数的原型(prototype)链中的现有属性

标签 javascript

这里我有两个构造函数,即“First”和“Second”。

First继承自Second。First在其原型(prototype)链上也有一个hair属性。

一个新创建的对象,比如 Tom,它应该是 First 构造函数的实例,它还有一个名为nail的用户定义属性。

如果我想使用 for...in 循环记录 tom 对象的所有可枚举属性,它只显示姓名、指甲和年龄。但是头发属性似乎从其原型(prototype)链中消失了。

为什么头发属性从原型(prototype)链中消失了?我怎样才能把它找回来??

<html>
<body>
<script>
   function First(name){
       this.name=name;
   }
   First.prototype.hair='black';// tom.hair gets me undefined
   function Second(){
       this.age=1;
   }

   First.prototype=new Second();
   var tom=new First('tom');
   tom.nail='sharp';// added property to tom
   for(var i in tom){
       console.log(i);
   }
   console.log(tom.hair);
</script>
</body>
</html>

最佳答案

您覆盖了原型(prototype)

First.prototype=new Second();

成功

First.prototype.age=new Second().age;

并且它有效。

JSFIDDLE.

关于javascript - 从另一个构造函数继承是否会覆盖继承构造函数的原型(prototype)链中的现有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25831828/

相关文章:

javascript - 为什么我需要为扩展函数设置构造函数?

javascript - 停止一个连续被调用的函数

javascript - Kendo Treeview 复选框按 ID 检查

javascript - 如何在 iPhone 触摸屏上实现 onmousedown 和 onmouseup

javascript - 悬停在另一个 div 上时显示和隐藏按钮

javascript - EcmaScript 和 JavaScript 指的是同一种语言吗?

php - 需要一些帮助来实现这个功能

javascript - 无法使用 D3JS 中的 html 输入值进行过滤

javascript - Highchart 日期不适用于某些数据系列

php - 将 javascript 客户端协调到单个后端游戏的最佳方法是什么?