1.组合继承 (JavaScript 中最常用的继承模式 )

  (position: page168)

(书中定义了两个变量名 SuperType   SubType  乍一看 感觉不太能区分,我将改为 a b ,更加明显区分开来这是两个东西。)

function a(name){this.name = name;this.colors = ["red", "blue", "green"];
}
a.prototype.sayName = function(){alert(this.name);}function b(name, age){//继承属性a.call(this, name);this.age = age;
}
//继承方法
b.prototype = new a();
b.prototype.constructor = b;
b.prototype.sayAge = function(){alert(this.age);
};
var instance1 = new b("Nicholas", 29);
instance1.colors.push("black");
alert(instance1.colors); //"red,blue,green,black"

instance1.sayName(); //"Nicholas";

instance1.sayAge(); //29

var instance2 = new b("Greg", 27);
alert(instance2.colors); //"red,blue,green"

instance2.sayName(); //"Greg";

instance2.sayAge(); //27

完成继承的思路:

  使用原型链实现对原型属性和方法的继承, 使用构造函数来实现对实例属性的继承。


  在这个例子中, a构造函数定义了两个属性: name 和 colors。 a的原型定义了一个方法 sayName()。 b构造函数在调用 a构造函数时传入了 name 参数,紧接着又定义了它自己的属性 age。然后,将 a的实例赋值给 b的原型,

然后又在该新原型上定义了方法 sayAge()。这样一来,就可以让两个不同的 b 实例既分别拥有自己属性——包括 colors 属性,又可以使用相同的方法了。 

 

2.寄生组合式继承 (实现基于类型继承的最有效方式 )

function object(o){function F(){}F.prototype = o;return new F();
}
function inheritPrototype(subType, superType){var prototype = object(superType.prototype); //创建对象prototype.constructor = subType; //增强对象subType.prototype = prototype; //指定对象
}
function a(name){this.name = name;this.colors = ["red", "blue", "green"];
}
a.prototype.sayName = function(){alert(this.name);
};
function b(name, age){a.call(this, name);this.age = age;
}
inheritPrototype(b, a);b.prototype.sayAge = function(){alert(this.age);
};// 调用
var instance1 = new b("Nicholas", 29);instance1.colors.push("black");
alert(instance1.colors); //"red,blue,green,black"instance1.sayName(); //"Nicholas";instance1.sayAge(); //29var instance2 = new b("Greg", 27);alert(instance2.colors); //"red,blue,green"instance2.sayName(); //"Greg";instance2.sayAge(); //27

  

  

转载于:https://www.cnblogs.com/adouwt/p/9267086.html

读书笔记-JavaScript高级程序设计(1)相关推荐

  1. 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题

    5种基本数据类型 可以直接对值操作 判断引用类型 var result = instanceof Array 执行环境 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对 ...

  2. 《Javascript高级程序设计》读书笔记之对象创建

    <javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决 ...

  3. 《JavaScript高级程序设计》读书笔记 -12.1 window对象

    <JavaScript高级程序设计>读书笔记 -12.1 window对象 12.1 window对象 12.1.1 Global作用域 12.1.2 窗口关系[不是很懂] 12.1.3 ...

  4. 《JavaScript高级程序设计》读书笔记 【8章~】【持更】

    文章目录 上一篇:<JavaScript高级程序设计>读书笔记 [1~7章] 8. BOM 8.1. window对象 窗口位置 窗口大小 打开窗口 间歇调用与超时调用 系统对话框 8.2 ...

  5. 读书笔记(06) - 语法基础 - JavaScript高级程序设计

    写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...

  6. JavaScript高级程序设计(读书笔记)(六)

    本笔记汇总了作者认为"JavaScript高级程序设计"这本书的前七章知识重点,仅供参考. 第六章 面向对象的程序设计 面向对象(Object-Oriented, OO)的语言有一 ...

  7. JavaScript高级程序设计(读书笔记)(一)

    本笔记汇总了作者认为"JavaScript高级程序设计"这本书的前七章知识重点,仅供参考. 第一章 JavaScript简介 JavaScript发展简史: 1995年,JavaS ...

  8. 《JavaScript 高级程序设计》精读笔记

    本系列读书笔记是我通过学习<Javascript 高级程序设计>第3版时结合自己的理解.概括.精炼然后加以一定的拓展,总结而来的,非常适合具有一定基础,同时又想把 JS 基础学更好的童鞋, ...

  9. 《javascript高级程序设计》笔记:内存与执行环境

    上一篇:<javascript高级程序设计>笔记:继承 近几篇博客都会围绕着图中的知识点展开 由于javascript是一门具有自动垃圾收集机制的编程语言,开发者不必担心内存的分配和回收的 ...

最新文章

  1. 图像特征点—SIFT特征点
  2. PHP使用curl_multi_add_handle并行处理
  3. 改改 Python 代码,运行速度还能提升 6 万倍,Science:先别想摩尔定律了
  4. python培训班排行榜-西安Python培训班排行榜
  5. jvm在不同系统中的最大内存空间地址
  6. java timer 线程安全_多线程之 线程安全与控制
  7. 一台25万公里卡罗拉的返老还童记
  8. 博客主题源码Yusi版本1.0,简洁明了的WordPress
  9. python画相关性可视化图_Python可视化matplotlibseborn16-相关性热图
  10. u盘安装linux系统自动关机,将u盘拔出后电脑自动关机怎么解决【解决方法】
  11. 启动类的@SpringBootApplication探究
  12. luogu4360 锯木厂选址 (斜率优化dp)
  13. STM32接入机智云--实现数据上传和命令下发
  14. 在excel中求算风向和风速范围的函数,用origin做风向玫瑰图
  15. 【解决】简单有效的使用lodop打印小票功能
  16. win10下装黑苹果双系统_黑苹果macOS10.15.4单硬盘三系统安装教程
  17. 报错解决:Failed to load config “react-app“ to extend from.
  18. 爬取豆瓣电影排行榜(评分)
  19. 嗯,春招两次腾讯面试都挂二面了,分享下我失败+傻傻的面试经历
  20. 利用matlab实现驻波仿真

热门文章

  1. 数据结构之直接插入排序图文详解及代码(C++实现)
  2. Python的单例模式
  3. python主要用于系统编程_一文带你了解python是什么?能做什么?为什么(附赠40G项目实战+绝版电子书)...
  4. 参与 Apache 顶级开源项目的 N 种方式,Apache Dubbo Samples SIG 成立!
  5. Go Mysql Driver 集成 Seata-Golang 解决分布式事务问题
  6. 电子书下载|2020 年云原生年货小红书来啦!
  7. 课时 22:有状态应用编排 StatefulSet(酒祝)
  8. SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可回滚)
  9. 直击痛点,详解 K8s 日志采集最佳实践
  10. python 字符串split 正则分割 换行符_python数据分析实战-JOINamp;SPLIT分割与合并