Web_Design 板


LINE

var BaseObject=function(){}; var ChildObject=function(){}; //宣告两个原型物件 BaseObject.prototype.hit=function(){ console.log('hit()呼叫成功!'); } //把hit函数放进BaseObject.prototype内 //所以BaseObject的实例都有hit() const util = require('util'); util.inherits(ChildObject,BaseObject); 这是Node.js搞出来的继承函数 让ChildObject可以继承BaseObject的prototype var obj = new ChildObject(); obj.hit(); //hit()呼叫成功 问题是我无聊看看他们的prototype内有什麽 console.log(BaseObject.prototype); 显示 BaseObject {hit:[Function]} 目前还正常 因为这就是我放的 但是! console.log(ChildObject.prototype); 显示 ChildObject {} 没有hit函数!!! 我new ChildObject()出来的实例都能呼叫hit() 但是ChildObject.prototype里面竟然是空的 所以Node.js骗我有继承 其实根本没继承 Node.js这样欺骗大家这样对吗???? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.173.252.61
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1504388808.A.F5A.html
1F:→ ssccg: 看不懂你在写什麽,prototype的继承方式本来就是自己的 09/03 06:16
2F:→ ssccg: prototype找不到就去找prototype的prototype啊 09/03 06:17
3F:→ ssccg: ChildObject的prototype本来就不会有hit 09/03 06:17
4F:→ nnlisalive: ChildObject.prototype没有Hit 怎麽new出来的实例都能 09/03 06:35
5F:→ nnlisalive: 呼叫hit? prototype里面不就是放共享的属性和方法 09/03 06:37
6F:→ nnlisalive: 既然没有共享的属性和方法 但是实例都能呼叫hit() 09/03 06:38
7F:→ nnlisalive: 不是很奇怪吗? 我的意思是这样 09/03 06:38
8F:推 jmlntw: 直接用 ES6 的 class extends 了啦。util.inherits 已经过 09/03 07:55
9F:→ jmlntw: 时了。 09/03 07:55
10F:→ jmlntw: 单纯回答这问题,因为 inherits 会设定 enumerable:false 09/03 07:56
所以enumerable:false 造成 ChildObject.prototype 没东西 但是每一个ChildObject的实例都有hit()可以呼叫? 我还没学到 class extends 应该是说连class是啥概念都不知道XD 总之 ES6 有搞出新方法 class extends 去实现JavaScript的继承 以後都不用util.inherits了吗? util.inherits变成是是Node.js多余的函式? ※ 编辑: nnlisalive (1.173.252.61), 09/03/2017 14:01:56
11F:→ ssccg: class extends只是语法糖,做的事情基本上是一样的 09/03 15:15
12F:→ ssccg: prototype的继承方式是: 你在呼叫 obj.hit()时,会先在obj 09/03 15:15
13F:→ ssccg: 中找有没有hit属性,没有再找ChildObject.prototype的属性 09/03 15:16
14F:→ ssccg: (ChildObject继承BaseObject其实是ChildObject.prototype是 09/03 15:17
15F:→ ssccg: 个BaseObject的实例),还是找不到再找他的prototype 09/03 15:21
16F:→ ssccg: 也就是BaseObject.prototype,然後就找到hit来呼叫 09/03 15:21
17F:→ ssccg: (如果一直往上找到Object.prototype还没有才是真的没有) 09/03 15:23
18F:→ ssccg: 所以ChildObject.prototype里没有hit,实例还是能呼叫hit 09/03 15:23
19F:→ ssccg: 你先了prototype却没学到prototype chain? 09/03 15:24
20F:→ ssccg: 学 09/03 15:25
21F:→ nnlisalive: 对 我只知道prototype怎麽用 还有是因为是要省记忆体 09/03 16:24
22F:→ nnlisalive: 不用每个实例都有自己的方法 有相同的方法共用就好 09/03 16:25
23F:→ nnlisalive: 共用的方法就放进prototype里 09/03 16:26
24F:推 LPH66: 然後 enumable:false 的意思是一般回圈是看不到它的 09/04 00:31
25F:→ LPH66: (这里尤其是指像 for(var s in obj) 这种 for) 09/04 00:32
26F:→ LPH66: 因此在平常印出这个物件时它就不会印出来 09/04 00:32







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP