第一章、 面向对象的JavaScript
面向对象程序设计(OOP,Object -Oriented Programming)中最常用到的概念:
对象:是指"事物"在程序设计语言中的表现形式。
这里的"事物"可以是任何东西。例如,对于猫这种常见对象来说,我们可以看到它们具有某些明确的特征(如颜色、名字、体型等),能执行某些动作(如喵喵叫、睡觉等)。在OOP语义中,这些对象特征都叫做属性,而那些动作则被称为方法。
类:在面向对象编程中,类(class)是对象(object)的模板,定义了同一组对象(又称 "实例")共有的属性和方法
JavaScript与C++或Java这种传统的面向对象语言不同,他实际上压根儿就没有类。该语言的一切都是基于对象的,其依靠的是一套原型(prototype)系统。而原型本身实际上也是一种对象。 在传统的面向对象语言中,我们一般会这样描述:"我基于Person类创建了一个叫做Bob的新对象"。而在这种基于原型的面向对象语言中,我们则要这样描述:“我将现有的Person对象扩展成了一个叫做Bob的新对象。”
封装:封装主要用于阐述对象中所包含的内容,通常由两部分组成。
- 相关的数据(用于存储属性)。
- 基于这些数据所能做的事(所能调用的方法)。
聚合:将几个现有对象合并成一个新对象的过程。
继承:在传统的OOP环境中,继承通常指的是类与类之间的关系,但由于JavaScript中不存在类,因此它的继承只能发生在对象之间。通过继承这种方式,我们可以非常优雅地实现对现有代码的重用。
多态:不同对象通过相同的方法调用来实现各自行为的能力,我们就称之为多态。
第二章、基本数据类型、数组、循环及条件表达式
2.1 基本数据类型综述
2.1.1JavaScript语言中有五大基本数据类型:
- 数字;
- 字符串;
- 布尔值;
- undefined;
- null。
任何不属于基本类型的东西都属于对象。
2.1.2 数字类型可以储存的数据包括:正负整数、浮点数、十六进制与八进制数、指数以及特殊数值NaN、Infinity、
-Infinity。
2.1.3 字符串类型存储的是一对引号之间的所有字符。
2.1.4 布尔类型的值只有两个:true和false。
2.1.5 null类型的值只有一个:null。
2.1.6 undefined类型的值只有一个:undefined。
2.1.7 绝大部分值在转换为布尔类型事都为true,但以下6种falsy值除外:
- ""(空字符串,若" "引号里面有空格结果就不一样了,转换为布尔类型为true);
- null;
- undefined;
- 0;
- NaN;
- false。
2.3.2 Infinity
Infinity表示的是最大的数,-Infinity表示的是最小的数,任何数除以0结果也为Infinity,不包括0,0除以0得到的是NaN。正负Infinity做算术运算得到的是NaN,Infinity与其他任何操作数(即数字类型里除了NaN和正负Infinity)执行任何算数运算的结果也都等于Infinity。
2.3.4 惰性求值
a&&b:将a,b转换为Boolean类型,在执行逻辑与,true返回b,false返回a;
a||b:将a,b转换为Boolean类型,在执行逻辑或,true返回a,false返回b
2.9 练习题
编写一个打印乘法口诀的脚本程序。提示使用嵌套语句来实现。
for(var i=1;i<10;i++){
for(var j=1;j<=i;j++){
document.write(j+"*"+i+"="+i*j+" ");
}
document.write("<br>");
}