原型模式
每个函数(准确说不是类、对象)都有一个prototype属性,这个属性是一个指针,指向一个对象。
使用原型对象的好处是可以让所有对象实例共享它包含的属性和方法。
1.原型对象
(1)当创建一个新函数,就会为该函数创建一个prototype属性,这个属性指向函数的原型对象。
(2)默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向 prototype属性所在函数  的指针。
(3)实例的内部包含一个指针,叫[[Prototype]]。不过这个指针对脚本则完全不可见(某些浏览器支持一种__proto__来访问)。
2.代码读取属性顺序
首先搜索对象实例本身,没有则继续搜索指针指向的原型对象。
例:
function Person(){
}
Person.prototype.name="Javascript";
var p1 = new Person();
var p2 = new Person();  
p1.name="lufeng";
alert(p1.name);//"lufeng"
alert(p2.name);//"Javascript"
使用delete操作符可以完全删除实例属性。
isPrototypeOf():确定对象之间是否存在prototype关系
hasOwnProperty():检测一个属性是存在于实例中,还是存在原型中。
Object.keys()、Object.getOwnPropertyNames():接收一个对象作为参数,返回
一个包含所有可枚举属性的字符串数组。
来看个很蛋疼的类继承(某个HTML5游戏框架):
inherit : function(childClass, parentClass) {
var Constructor = new Function();
Constructor.prototype = parentClass.prototype;
childClass.prototype = new Constructor();
childClass.prototype.constructor = childClass;
childClass.superclass = parentClass.prototype;
if(childClass.prototype.constructor == Object.prototype.constructor) {
childClass.prototype.constructor = parentClass;
}
}
感觉代码看来比较乱,我画了个图:

Javascript:原型模式类继承相关推荐

  1. JavaScript 原型链和继承面试题

    JavaScript 原型链和继承问题 JavaScript 中没有类的概念的,主要通过原型链来实现继承.通常情况下,继承意味着复制操作,然而 JavaScript默认并不会复制对象的属性,相反,Ja ...

  2. JavaScript原型链实现继承

    js 继承 原型链 默认的原型 确定原型和实例的关系 谨慎定义方法 原型链的问题 借用构造函数 组合继承 最常用的继承模式 原型式继承 寄生式继承 寄生组合式继承 是引用类型最理想的继承范式 学习记录 ...

  3. 深入浅出理解Javascript原型概念以及继承机制(转)

    在Javascript语言中,原型是一个经常被讨论到但是有非常让初学者不解的概念.那么,到底该怎么去给原型定义呢?不急,在了解是什么之前,我们不妨先来看下为什么. Javascript最开始是网景公司 ...

  4. 《JavaScript应用程序设计》一一3.1 过时的类继承

    本节书摘来华章计算机出版社<JavaScript应用程序设计>一书中的第3章,第3.1节,作者:Eric Elliott 更多章节内容可以访问云栖社区"华章计算机"公众 ...

  5. js面向对象小结(工厂模式,构造函数,原型方法,继承)

    本文转至:TJYoung 最近过了一遍尼古拉斯泽卡斯的高级程序设计第三版(红皮书)第六章:面向对象程序设计,现在把总结出来的东西和大家分享一下. 主要内容如下: 1.工厂模式 2.构造函数模式 3.原 ...

  6. 深入理解原型链与继承(详解JS继承原理)

    文章目录 原型链与继承 new 关键字的执行过程 构造函数.实例对象和原型对象 原型链的概念及图解 第一层`__proto__`指向:实例对象 第二层`__proto__`指向:`Function.p ...

  7. 【设计模式】原型模式 ( 概念简介 | 使用场景 | 优缺点 | 基本用法 )

    文章目录 I . 原型模式 概念简介 II . 原型模式 使用场景 III . 原型模式 优缺点 IV . 原型模式 实现及 简单示例 I . 原型模式 概念简介 原型模式 : 用原型实例指定创建对象 ...

  8. 【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )

    文章目录 I . 原型模式 总结 II . 原型模式 浅拷贝 III . 原型模式 深拷贝 IV . 原型模式 与 单例 V . 原型模式 中的 final 关键字 ( 禁止出现 ) I . 原型模式 ...

  9. Java设计模式——原型模式

    概述 原型模式是为了解决一些不必要的对象创建过程.当Java JDK中提供了Cloneable接口之后,原型模式就变得异常的简单了.虽然由于Cloneable的引入使用程序变得更简单了,不过还是有一些 ...

最新文章

  1. 编辑PDF文档,Word 2013可以是您的选择
  2. dovecot vsz_limit参造成foxmail、outlook等客户端工具接收邮件有时候报错
  3. 《研磨设计模式》chap8 生成器模式Builder
  4. LeetCode 17. 电话号码的字母组合(回溯)
  5. 【作业5】了解在什么岗位上有哪些语言需要使用
  6. .Net混淆研究(一)---基本原理和利弊
  7. 成为一名架构师得学习哪些知识?
  8. 为什么程序员基本不炫富?
  9. 中国房地产总市值与GDP的比例
  10. scratch编程钟表
  11. 大规模电生理网络动力学
  12. Wireshark过滤器写法总结
  13. CSS属性:字体属性和文本属性
  14. 房天下二手交易平台房源数据采集
  15. 大数据发展促进委员会在京成立
  16. Unity Editor Window Zooming
  17. Android6.0 WMS(八) 显示Activity的启动窗口
  18. 现代化多媒体教室的计算机系统,多媒体电教室系统设计方案 现代化学校电教平台设计...
  19. WebSocket 实现断线重连 详细代码 项目源码
  20. 现在做网站到底需要多少钱?

热门文章

  1. 【JZOJ3598】【CQOI2014】数三角形
  2. struts2+jquery 实现ajax登陆
  3. 《Two Dozen Short Lessons in Haskell》学习(十八) - 交互式键盘输入和屏幕输出
  4. 母版页可以动态切换吗?
  5. python去除图片上的文字_Python图像处理之识别图像中的文字(实例讲解)
  6. php webservice 上传,PHP实现WebService服务
  7. oracle insert 新增语句
  8. 原型(Prototype)的场景是不支持循环依赖的
  9. 网络知识:交换机中的半双工与全双工知识笔记
  10. 培养这10个习惯,你就离UNIX高手更进一步了