9.3.2 ECMAScript 5.0
前端常用开发工具:sublime、visual Studio Code、HBuilder、Webstorm。
那么大家使用的PCharm跟WebStorm是JetBrains公司推出的编辑工具,开发阶段建议使用。
JS的引入方式
内接式
外接式
注释
定义变量:var就是一个关键字,用来定义变量。所谓关键字,就是有特殊功能的小词语。关键字后面一定要有空格隔开。
变量的赋值:等号表示赋值,将等号右边的值,赋给左边的变量。
变量名:我们可以给变量任意的取名字。
变量要先定义,才能使用。比如,我们不设置变量,直接输出:
控制台将会报错:

正确写法:
变量的命名规范
变量名有命名规范:只能由英语字母、数字、下划线、美元符号$构成,且不能以数字开头,并且不能是JavaScript保留字。
下列的单词叫做保留字,就是说不允许当做变量名,不用记:
基本数据类型
数值类型:number
如果一个变量中,存放了数字,那么这个变量就是数值型的
ps:在JavaScript中,只要是数,就是数值型(number)的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是number类型的。
字符串类型:string
连字符和+号的区别
键盘上的+可能是连字符,也可能是数字的加号。如下:
总结:如果加号两边都是数值,此时是加。否则,就是连字符(用来连接字符串)。
布尔类型:boolean
空对象:null
未定义:undefined
复杂(引用)数据类型
Function
Object
Arrary
String
Date
后面课程讲解
运算符
赋值运算符
以var x = 12,y=5来演示示例

算数运算符
var a = 5,b=2;

比较运算符
var x = 5;

数据类型转换
将number类型转换成string类型
隐式转换
强制转换
将string类型转换成number类型
任何的数据类型都可以转换为boolean类型
流程控制
if
if-else
if-else if -else
逻辑与&&、 逻辑或||
switch 语句
while循环
给大家总结了循环三步走,任何语言的循环离不开这三步:
初始化循环变量
判断循环条件
更新循环变量
练习:将1~100所有是2的倍数在控制台打印。使用while循环
do-while循环
用途不大:就是先做一次 ,上来再循环
for循环
for循环遍历列表是最常用的对数据的操作,在js中希望大家熟练使用for循环的书写方式
课堂练习:输入1~100之间所有数之和
for循环嵌套的练习
document.write(''); 往浏览器文档中写
小作业:
1.在浏览器中输出直角三角形
代码:
2.在浏览器中输出 等腰三角形
代码:
常用内置对象(复杂数据类型)
所谓内置对象就是ECMAScript提供出来的一些对象,我们知道对象都是有相应的属性和方法,jie'xi'lai
数组Array
字面量方式创建(推荐大家使用这种方式,简单粗暴)
使用构造函数(后面会讲)的方式创建 使用new关键词对构造函数进行创建对象,构造函数与后面的面向对象有关系
数组的常用方法

数组的合并 concat()
join() 将数组中元素使用指定的字符串连接起来,它会形成一个新的字符串
slice(start,end); 返回数组的一段记录,顾头不顾尾
pop 移除数组的最后一个元素
push() 向数组最后添加一个元素
reverse() 翻转数组
sort对数组排序
判断是否为数组:isArray()
字符串string

chartAt() 返回指定索引的位置的字符
concat 返回字符串值,表示两个或多个字符串的拼接
replace(a,b) 将字符串a替换成字符串b
indexof() 查找字符的下标,如果找到返回字符串的下标,找不到则返回-1 。跟seach()方法用法一样
slice(start,end) 左闭右开 分割字符串
split('a',1) 以字符串a分割字符串,并返回新的数组。如果第二个参数没写,表示返回整个数组,如果定义了个数,则返回数组的最大长度
substr(statr,end) 左闭右开
toLowerCase()转小写
toUpperCase()转大写
特别:
Math内置对象

Math.ceil() 向上取整,'天花板函数'
Math.floor 向下取整,'地板函数'
求两个数的最大值和最小值
随机数 Math.random()
如果让你取100-200之间的随机数,怎么做?
背过公式:min - max之间的随机数: min+Math.random()*(max-min);
函数
函数:就是把将一些语句进行封装,然后通过调用的形式,执行这些语句。
函数的作用:
解决大量的重复性的语句
简化编程,让编程模块化
解释如下:
function:是一个关键字。中文是“函数”、“功能”。
函数名字:命名规定和变量的命名规定一样。只能是字母、数字、下划线、美元符号,不能以数字开头。
参数:后面有一对小括号,里面是放参数用的。
大括号里面,是这个函数的语句。
伪数组 arguments
arguments代表的是实参。有个讲究的地方是:arguments只在函数中使用。
结果:

(2)之所以说arguments是伪数组,是因为:arguments可以修改元素,但不能改变数组的长短。举例:
清空数组的几种方式:
对象Object
1.使用Object或对象字面量创建对象
2.工厂模式创建对象
3.构造函数模式创建对象
4.原型模式创建对象
使用Object或字面量方式创建对象
JS中最基本创建对象的方式:
这样,一个student对象就创建完毕,拥有2个属性name以及age,分别赋值为"easy"和20。
如果你嫌这种方法有一种封装性不良的感觉。来一个对象字面量方式创建对象。
这样看起来似乎就完美了。但是马上我们就会发现一个十分尖锐的问题:当我们要创建同类的student1,student2,…,studentn时,我们不得不将以上的代码重复n次....
有个提问?能不能像工厂车间那样,有一个车床就不断生产出对象呢?我们看”工厂模式”。
工厂模式创建对象
JS中没有类的概念,那么我们不妨就使用一种函数将以上对象创建过程封装起来以便于重复调用,同时可以给出特定接口来初始化对象
这样一来我们就可以通过createStudent函数源源不断地”生产”对象了。看起来已经高枕无忧了,但贪婪的人类总有不满足于现状的天性:我们不仅希望”产品”的生产可以像工厂车间一般源源不断,我们还想知道生产的产品究竟是哪一种类型的。
比如说,我们同时又定义了”生产”水果对象的createFruit()函数:
对于以上代码创建的对象v1、v2,我们用instanceof操作符去检测,他们统统都是Object类型。我们的当然不满足于此,我们希望v1是Student类型的,而v2是Fruit类型的。为了实现这个目标,我们可以用自定义构造函数的方法来创建对象
构造函数模式创建对象
在上面创建Object这样的原生对象的时候,我们就使用过其构造函数:
在创建原生数组Array类型对象时也使用过其构造函数:
在进行自定义构造函数创建对象之前,我们首先了解一下构造函数和普通函数有什么区别。
1、实际上并不存在创建构造函数的特殊语法,其与普通函数唯一的区别在于调用方法。对于任意函数,使用new操作符调用,那么它就是构造函数;不使用new操作符调用,那么它就是普通函数。
2、按照惯例,我们约定构造函数名以大写字母开头,普通函数以小写字母开头,这样有利于显性区分二者。例如上面的new Array(),new Object()。
3、使用new操作符调用构造函数时,会经历(1)创建一个新对象;(2)将构造函数作用域赋给新对象(使this指向该新对象);(3)执行构造函数代码;(4)返回新对象;4个阶段。
ok,了解了构造函数和普通函数的区别之后,我们使用构造函数将工厂模式的函数重写,并添加一个方法属性:
这样我们再分别创建Student和Fruit的对象:
这时我们再来用instanceof操作符来检测以上对象类型就可以区分出Student以及Fruit了:
这样我们就解决了工厂模式无法区分对象类型的尴尬。那么使用构造方法来创建对象是否已经完美了呢?使用构造器函数通常在js中我们来创建对象。
我们会发现Student和Fruit对象中共有同样的方法,当我们进行调用的时候这无疑是内存的消耗。
我们完全可以在执行该函数的时候再这样做,办法是将对象方法移到构造函数外部:
在调用stu1.alertName()时,this对象才被绑定到stu1上。
我们通过将alertName()函数定义为全局函数,这样对象中的alertName属性则被设置为指向该全局函数的指针。由此stu1和stu2共享了该全局函数,解决了内存浪费的问题
但是,通过全局函数的方式解决对象内部共享的问题,终究不像一个好的解决方法。如果这样定义的全局函数多了,我们想要将自定义对象封装的初衷便几乎无法实现了。更好的方案是通过原型对象模式来解决。
原型的模式创建对象
原型链甚至原型继承,是整个JS中最难的一部分也是最不好理解的一部分,在这里由于我们课程定位的原因,如果对js有兴趣的同学,可以去查阅一下相关JS原型的一些知识点。
Date日期对象
创建日期对象只有构造函数一种方式,使用new关键字

JSON
概念简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。
在JSON中,有两种结构:对象和数组。
对象
一个对象以“{”开始,“}”结束,“key/value”之间运用 “,”分隔。
数组
数组是值的有序集合。一个数组以“[”开始,“]”结束。值之间运用 “,”分隔。
JSON对象和JSON字符串转换
在数据传输过程中,JSON是以字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:
JSON字符串:
JSON对象:
JSON字符串转换JSON对象
JSON对象转化JSON字符串
遍历JSON对象和JSON数组
遍历JSON对象代码如下:
遍历JSON数组代码如下
Last updated
Was this helpful?