读书笔记-JavaScript高级程序设计(1)
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(); //29 var instance2 = new b("Greg", 27); alert(instance2.colors); //"red,blue,green" instance2.sayName(); //"Greg"; instance2.sayAge(); //27
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
html实体编码遇上js代码
单双引号 在js代码中 在js中单、双引号引起来的是字符串,如果我们要在字符串中使用单、双引号,需要反斜杠进行转义 let str='user\'s name'; // or let str=" user's name"; // or let str="she said:\"...\"."; 如果在字符串中输出反斜杠,仍然是用反斜杠转义,即2个反斜杠输出1个反斜杠 在html代码中 html标签中,属性值通常用双引号引起来,也可以使用单引号或不用引号。 <input name=user /> <input name="user" /> <input name='user' /> 这3种写法都正确,不过通常我们是选择用双引号引起来。如果我们要在属性值中使用单、双绰号,我们不能直接写成下面这样 <input n
- 下一篇
用python抓取“3d”彩票数据,怎么分析你说了算!
快下班了,正好准备去买彩票,就顺手写了2个脚本,一个用来下载最近的彩票数据,一个用来统计彩票数字,分享给大家! 彩票数据获取并写入excel表格 数据来源自己看吧~用外链通不过。。。 所用库:xlwt,requests,lxml 有几点需要注意的: 1、构建列表。因为存入excel文件的时候用的是列表,所以新建一个函数,分别取网页5个数据:时间、期数、开奖数123,然后每一页嵌套写入列表类似结构为[[时间、期数、开奖数1,2,3],[时间、期数、开奖数1,2,3]……],在循环页数,获取所有的数据!注意构建列表的形式和列表结果,这个在你写入表格的时候很重要! 2、写入数据。xlwt写入文件的方法为ws.write(行,列,数据),按行写入文件,所以新建一个变量line(代码第36行),每写入一行自增1。 其他方面都很简单,没有反爬,就是为了获取数据,好做分析! 最后excel表中的数据,是这样的: 最后大概有4840行数据,足够我们分析的了! 数据处理 用xlrd库就可以~话说xlwt库和xlrd库好像就是一个写数据,一个读数据。。。 就写了一个抓热门数字的,也就是取频率最高的。如果您...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路