当前位置: 首页 > news >正文

我的原型链家族将要崛起。

听过一个观点。很多中国家庭都还有一个难以放下的久思想,要媳妇生个男孩做为家族的延续,但讽刺的是,现在很多年轻人连爷爷奶奶叫什么名字都不知道,更别说爷爷的爸爸、爷爷的爷爷叫什么了。

听一个同事讲,他们村里有个宗祠,里面收藏了一本家族谱,始于明末清初,里面记载着每一个村民的名字,姓氏“舒”,为了逃避清兵到一个穷山僻岭农耕女织,延续至今。 仔细想想建立个家族谱还挺重要的,就比如你去面试遇到一个同姓的面试官,查族谱一看,竟然第前十代是对兄弟,这种血浓于水的亲切感瞬间就上来了。

所以我试图创造个原型链模型家族,凡是我家族的人,都可以被称为object。为了保持家族的有序繁殖,我给部分族人一个职称function,和普通的族人相比,function们拥有一个可操控的族人(克隆原体prototype),function可以使用魔法new将自己的prototype的基因附加到一个新的普通族人身上,每个族人可以给自己增加新的特性,当然也包括function,但为了防止function肆意破坏基因传递,new魔法只可以萃取prototype的基因。

为了辨识族人,我给每个族人赋予了__proto__隐藏属性,此属性是用来告诉别人自己是由哪个prototype复制而生的,prototype同样也被赋予了__proto__

在我的家族里,我自称Object,设定为function型族人,我也操控着一个prototype,此prototype的基因是家族的最原始基因,为了区分他和别的prototype,我给他设定了一个高贵的__proto__属性null,表示这是家族基因的源头。

为了让族人们都可以了解自己的前世今生,我制造了instanceof魔镜,族人们对着魔镜问:“请问我身上有function xxx的基因吗”?魔镜就会顺着__proto__属性一层层的往下找,如果到了__proto__是null时还没找到,魔镜就会告诉你:“你没有此function xxx的基因”。当然,要是你对着魔镜问:“请问我身上有Object的基因吗”?魔镜会果断的告诉你:“当然有,他可是我们的神”!

为了让别人也可以拥有原型链模型家族,我决定公开出此模型的图片版本:

相关文章:

  • 一步步实现web程序信息管理系统之二--后台框架实现跳转登陆页面
  • 基于CentOS设置和使用Yum软件仓库
  • 深入浏览器事件循环的本质
  • 镶锆石、侧边指纹、双屏翻盖机,三星的这款2万块手机,只有土豪能懂
  • 2018自媒体运营吸粉3大途径
  • 闭包--闭包作用之保存(一)
  • 智能监控在袋鼠云中的应用
  • 一个UML类图示例
  • Google 的 QUIC 华丽转身成为下一代网络协议: HTTP/3.0
  • eclipse 设置python 界面为默认展示
  • HTTP那些事
  • Java浅Copy的一些事
  • Java Log4j 配置文件
  • C++ 编译器
  • Haskell写的Parser
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • HomeBrew常规使用教程
  • JavaScript对象详解
  • JavaScript服务器推送技术之 WebSocket
  • JavaScript设计模式与开发实践系列之策略模式
  • Linux链接文件
  • Netty 4.1 源代码学习:线程模型
  • nodejs实现webservice问题总结
  • session共享问题解决方案
  • use Google search engine
  • 免费小说阅读小程序
  • 区块链技术特点之去中心化特性
  • 微信公众号开发小记——5.python微信红包
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.ajax()
  • $jQuery 重写Alert样式方法
  • %check_box% in rails :coditions={:has_many , :through}
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)nginx 配置(nginx.conf)
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .net refrector
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 使用配置文件
  • .net分布式压力测试工具(Beetle.DT)
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • ?.的用法
  • @Transactional类内部访问失效原因详解
  • [1181]linux两台服务器之间传输文件和文件夹
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [BJDCTF 2020]easy_md5
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [FROM COM张]如何解决Nios II SBTE中出现的undefined reference to `xxx'警告
  • [FUNC]判断窗口在哪一个屏幕上
  • [hdu 3065] 病毒侵袭持续中 [AC自动机] [病毒特征码匹配]
  • [javaee基础] 常见的javaweb笔试选择题含答案
  • [LeetCode]: 145: Binary Tree Postorder Traversal
  • [Linux版本Debian系统]安装cuda 和对应的cudnn以cuda 12.0为例