有以下代码不明白,请大家帮忙解惑,谢谢大家啦!

2016-05-25 17:17:19 +08:00
 palmers
 function Cat(){} 
 function F() {}
 F.prototype = cat ;
var f = new F()

查看 f 的 constructor 发现自动就修正为 Cat 了? 为什么呢? 是因为 new 关键字的作用吗?

谢谢大家啦!

3070 次点击
所在节点    Node.js
8 条回复
jarlyyn
2016-05-25 17:29:38 +08:00
ChiangDi
2016-05-25 17:34:25 +08:00
没有吧,运行之后 f.constructor.name 是 Function, 因为 Cat.constructor 是 Function
SuperMild
2016-05-25 17:45:23 +08:00
与其说修正,不如说是被污染(覆盖)了。 constructor 在 prototype 里面。
F.prototype.constructor === f.constructor
daysv
2016-05-25 17:58:07 +08:00
这代码有问题吧? 小写 cat? 另外建议问这类问题之前多看看书
Sunyanzi
2016-05-25 18:01:32 +08:00
只有我觉得这毫无悬念的就是一个简单的原型链继承吗 ...

F.prototype 是小写的 cat ... 我估计 LZ 把 cat = new Cat 这行当作没用的东西给删了 ...
magicdawn
2016-05-25 18:43:54 +08:00
f.hasOwnProperty('constructor') // false
f.constructor === cat.constructor // true
palmers
2016-05-26 08:45:07 +08:00
@daysv 不好意思 少一行代码
```javascript

var cat = new Cat() ;
```
jerray
2016-05-26 11:13:01 +08:00
不就是继承么

建议参考 https://www.h5jun.com/post/inherits.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/281198

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX