问题贴:http://bbs.csdn.net/topics/390446362

new四部曲:

(1)创建一个新的对象,并让函数的 this 指针指向它;
(2)将函数的 prototype 对象的所有成员都赋给这个新对象,特别地:对象的__proto__ = 函数的prototype;
(3)执行函数体,对这个对象进行初始化操作;
(4)返回(1)中创建的对象

注意定义函数的时候这个函数是不会被执行的(个人比较容易搞错),在new时,先执行相关赋值,然后再执行构造函数。所以会出现第一次new后得到的对象没有继承指定的prototype的方法和属性(因为prototype还未重新赋值),第二次new就可以。看代码:

function View(){}
View.prototype.a = function{alert("我是View的父类函数");}
function switcher()
{switcher.prototype = View.prototype;
}
s = new switcher();
alert(s.a);
s = new switcher();
alert(s.a);

输出

那么要实现继承,解决办法是什么呢

方案一:

function View(){}
View.prototype.a = function{alert("我是View的父类函数");}
function switcher()
{
}
switcher.prototype = View.prototype;                                        //              外部执行
s = new switcher();
alert(s.a);
s = new switcher();
alert(s.a);

输出:


方案二:

function switcher()
{this.__proto__ = View.prototype;
}
s = new switcher();
alert(s.a);
s = new switcher();
alert(s.a);

输出:

虽然两种方案效果一样,但是后者可以将语句放在函数内,这样更好,便于继承以及代码的耦合。

关于prototype使用位置问题的讨论相关推荐

  1. 使用prototype特性编程中的效率问题

    前几天有位网友询问了我一个问题,主要是关于JavaScript的prototype特性的效率.因为作为一个如此强大并且灵活的东西,难免会让人觉得效率上可能有较大的损失.但是实际上prototype特性 ...

  2. Transformer架构:位置编码

    2017年,Google的Vaswani 等人提出了一种新颖的纯注意力序列到序列架构,闻名学术界与工业界的 Transformer 架构横空出世.它的可并行化训练能力和优越的性能使其成为自然语言处理领 ...

  3. Qt鼠标相对位置、绝对位置、窗口位置、控件位置、控件大小、控件绝对位置

    目录 坐标系 鼠标位置 控件位置 控件的相对位置 控件绝对位置 控件的大小,rect 窗口位置 窗口的大小 窗口绝对位置 窗口相对位置 总结   在Qt界面开发时,有时需要根据鼠标位置,控件位置来确定 ...

  4. 最近的一次敏捷项目Scrum经验总结

    Team刚刚完成了一个敏捷项目,做一下项目总结,以备以后借鉴和提高. 需求 - 沟通 – 人 - 过程 - 工具 项目要成功的最关键因素是什么?软件要快速高效又高质量的提交靠的是什么?有人说最关键是项 ...

  5. Scrum敏捷开发之我的总结

    Team刚刚完成了一个敏捷项目,做一下项目总结,以备以后借鉴和提高. 需求 - 沟通 – 人 - 过程 - 工具 项目要成功的最关键因素是什么?软件要快速高效又高质量的提交靠的是什么?有人说最关键是项 ...

  6. skynet源码赏析

    skynet源码赏析 对于skynet,需要屡清楚的几个问题 skynet本质上解决什么问题? skynet有哪些基本的数据结构? skynet有几类线程,他们分别的作用是什么? skynet如何启动 ...

  7. ReMILO:使用短读和长读的参考辅助错配检测算法

    ReMILO:使用短读和长读的参考辅助错配检测算法  鲍古德, 宋长进, 凌小兰 作者须知 Bioinformatics,第34卷,第1期,2018年1月1日,第24-32页,https: //doi ...

  8. 样式表(CSS:Cascading Style Sheets)简要教程[上]

    首先提供两个手册的下载 CSS2&JavaScript.rar 一.样式表基础 1. 样式表中每一个条目由选择符(selector)和对应的规则组成,选择符通常是HTML元素名称,也可以是类( ...

  9. Go嵌套并发实现EDM,附坑点分析#1

    看着身边优秀的小伙伴们早就开始写博客,自己深感落后,还好迟做总比不做好,勉励自己见贤思齐.趁着年前最后一个周末,阳光正好,写下第一篇博客,为2019年开个头,以期完成今年为自己立下的flags. 从P ...

最新文章

  1. 管理类业务系统菜单部分美化经验分享,把所有好的东西拿过来拼凑并不容易能形成整体的效果...
  2. 最后一篇,小白看的Python基础教程,详细得很(十一)
  3. c语言从键盘输入asdfg输出asdfg,C语言复习题参考答案.doc
  4. sql 整改措施 注入_SQL注入入侵防范措施
  5. 用 ReactJs 创建Mac版的 keep
  6. 6.SOA架构:服务和微服务分析及设计--- Web服务的服务API与契约设计
  7. C++ 安全单例模式总结
  8. i3wmvim终极配置
  9. NTL密码算法开源库——大整数ZZ类(二)
  10. 学计算机做纸质笔记,详细图文教你康奈尔大学推荐的超级笔记法,只要一张A4纸张,你也可以做学霸...
  11. 12组-选题与需求分析报告
  12. 服务器2003系统怎么卸载软件,WindowsXP系统添加删除程序的方法
  13. 经颅电刺激对生理和病理衰老过程中情景记忆的影响
  14. arduino教程-08.超声波的应用
  15. 物流单号保存在TXT文档,教你一键导入批量查询物流信息
  16. 发布租房信息html模板,个人房屋出租怎么写 发布租房信息的注意事项
  17. CSS_02_背景_文本_字体_链接_列表_表格
  18. Mysql中1050-Table XXX already exists解决方案
  19. 计算机中常用的侦查技术分析,计算机取证技术运用分析.doc
  20. 打开chm文件,不显示文件内容的解决办法

热门文章

  1. 数据访问......单条件查询与多条件查询
  2. 【Qt】Qt之进程间通信(共享内存)【转】
  3. dba_segments和dba_tables的不同
  4. Oracle 客户端连接服务器[转]
  5. 如何处理db2中文不显示
  6. [剑指offer]面试题第[35]题[Leetcode][第138题][JAVA][复杂链表的复制][暴力][HashMap][复制链表]
  7. 电子报账系统源码_网上商城系统建设心得,轻松搞定选择困难
  8. android中怎么保存checkbox中的checked属性_第二十四天HTML中的form表单
  9. mysql数据库持续_MySql数据库--持续记录ing
  10. 前端radio单选框默认选中_开发记录篇前端内容1