概述
Js 是基于对象和事件驱动的脚本语言,主要应用在客户端
- 特点:
- 交互性(他可以做信息的动态交互)
- 安全性(不允许访问本地硬盘)
- 跨平台性(只要有可以解析 Js 的浏览器就可执行,与平台无关)
区别(Java)
- 它们分别是不同公司的产品
- Js 基于对象,Java面向对象
- Js 只需解释就可执行,Java需先编译为字节码文件,再执行
- Js 弱类型,Java强类型
结合(HTML)
- Js和html相结合的方式:
- 1、将 Js 代码封装到 <script> 标签中。
- 2、将 Js 代码封装到 Js 文件中,并通过 <script> 中的src属性进行导入。
- 注意:如果 <script> 标签中使用src属性,那么该标签中封装的 Js 代码不会被执行,
- 所以通常导入 Js 文件都是用单独 <script> 来完成
1 | <!--导入一个js文件--> |
语法
通用内容
通常高级程序设计语言所包含的语法内容:
- 1、关键字:该种语言中被赋予了特殊含义的单词。
- 2、标示符:用于标示数据和表达式的符号。通常可以理解为在程序中自定义的名称。比如变量名,函数名。
- 3、注释:注解说明解释程序。用于调试程序。
- 4、变量:用于标示内存中一片空间。用于存储数据,该空间的中的数据是可以变化的。
- 什么时候使用变量,当数据不确定的时候。
- 5、运算符:可以让数据进行运算的符号。
- 6、语句:用于对程序的运行流程进行控制的表达式。
- 7、函数:用于对功能代码进行封装,便于提高复用性。
- 8、数组:对多数据进行存储,便于操作。就是传说中容器。
- 9、对象:只要是基于对象的语言,或者是面向对象的语言,就存在着对象的概念,对象就是一个封装体。
- 既可以封装数据有可以封装函数。
- 这些都是高级程序设计语言具备的共性内容,只不过各种语言对这些内容的表现形式有所不同,
- 但是使用基本思想是一致。
变量
- Js 中定义变量,使用到关键字 var
- 定义变量,Js是弱类型的
1 | <script type="text/javascript"> |
运算符
- 算术运算符
- + - * / % ++ –
- 赋值运算符
- = += -= *= /= %=
- 比较运算符:运算的结果要么是false要么是true。
- > < >= <= != ==
- 逻辑运算符:用来连接两个 Boolean 型的表达式
- 位运算符
- & | ^ >> << >>>
- 三元运算符
- ? :
1 | <script type="text/javascript"> |
细节
- undefined:未定义,其实它就是一个常量
1 | <script type="text/javascript"> |
语句
- 顺序结构
- 判断结构 代表语句:if
- 选择结构 swich
- 循环结构 while do while for
- 其他语句 break continue:
1 | <script type="text/javascript"> |
练习
- 99乘法表,加上样式
1 | <html> |
数组
- 数组用于存储更多的数据,是一个容器。
- 特点:
- 1、长度的是可变的。
- 2、元素的类型是任意的。
- 建议在使用数组时,存储同一类型的元素。操作起来较多方便。
1 | js中的数组定义的两种方式: |
函数
- 函数:就是一个功能的封装体。
- 定义功能通常需要两个明确。
- 1、功能的结果
- 2、功能实现中的参与运算的未知的内容
- Js中的定义函数的格式,通过指定的关键字来定义
1 | function 函数名(参数列表){ |
细节
- 1、只要使用函数的名称就是对这个函数的调用。
- 2、函数中有一个数组在对传入的参数进行存储。这个数组就是arguments
1 | <script type="text/javascript"> |
- 小细节2
1 | <script type="text/javascript"> |
动态函数
- Js函数的其他表现形式
- 动态函数:使用的是Js中内置的一个对象Function
- 只不过用的不是很多
- 参数列表,函数体都是通过字符串动态指定的
1 | <script type="text/javascript"> |
匿名函数
- 匿名函数:没有名字的函数,通常是函数的简写形式。
1 | <script type="text/javascript"> |
练习一
- 综合练习:
- 1、定义功能,完成对数组的最值获取
- 2、对数组排个序
- 3、对数组查个找
- 4、对数组元素进行反转
1 | <script type="text/javascript"> |
全局和局部变量
- 在脚本片段中定义的变量,是全局变量
- 函数内定义的变量,是局部变量
1 | <script type="text/javascript"> |
常见对象
Object
- toString():将对象变成字符串
- valueOf():返回制定对象原始值
1 | <script type="text/javascript"> |
String
- Js相比 Java 的String少很多功能 我们可以自行添加
1 | //out.js |
1 | <body> |
- 既然trim方法是用来操作字符串的方法,可不可以像字符串已有的方法一样,
- 将该方法也定义到字符串对象中呢?直接用字符串对象调用就欧了
原型
- 这里就可以使用一个该字符串的原型属性来完成:
- 原型:就是该对象的一个描述。该描述中如果添加了新功能,那么该对象都会具备这些新功能。
- 而prototype就可以获取到这个原型对象,通过prototype就可以对对象的功能进行扩展。
- 需求:想要给string对象添加一个可以去除字符串两端空格的新功能,就可以使用原型属性来完成。
1 | <script> |
- 我们来试着用原型完成一个小练习
- 添加一个,将字符串进行反转的方法
1 | String.prototype.reverse = function(){ |
Array
- 在下面代码中展示了一些常用的Array方法
- concat、join、pop、reverse、shift、sort、splice、unshift
1 | <script type="text/javascript" src="../demo/out.js"></script> |
- pop() 方法是删除最后一个元素,unshift()方法是在头部插入
- 那么是不是可以用他们做出堆栈,队列那?可以自己试试呀
Date
1 | <script type="text/javascript" src="out.js"></script> |
Math
- 该对象的中的方法都是静态的。不需要new,直接Math调用即可
1 | <script type="text/javascript" src="out.js"></script> |
全局方法
- 全局对象都在 global 中, 如 ParseInt
1 | parseInt("123"); |
Number
- 我们刚刚在ParseInt 里,已经知道了怎么将指定进制转换十进制
- 那么如何把十进制 转换为 指定进制 那?
1 | //将十进制转成其他进制,使用数字对象完成 |
特有语句
- 为了简化对象调用内容的书写,可以使用 Js中的特有语句 with 来完成。
1 | /* |
- for in :对对象进行变量的语句
1 | var arr = [32,80,65]; |
自定义对象
- 如果想要自定义对象,应该先对对象进行描述
- Js是基于对象,不是面向对象的,不具备描述事物的能力
- 我们还想按照面向对象的思想编写 Js
- 就要先描述,在 Js中,可以用函数来模拟面对对象的中的描述
1 | //用js来描述人 |
- 封装
1 | function Person(name,age){ |
- 直接使用{}定义属性和值的键值对方式。键值键通过:连接,键与键之间用逗号隔开
1 | var pp = { |
- 定义对象 比较常用map,键值对的形式
1 | var myobj = { |