基础语法
- 与Java基本类似
函数(方法)
-
在js中, 方法的调用, 或者说查找, 只需要方法名即可, 不需要写 (), 例 :
-
//checkUserName 是方法名 document.querySelector('#username').addEventListener('blur', checkUserName) -
在执行场景, 需要加括号
-
document.querySelector('form').addEventListener('submit', (even) => { if (!checkUserName() || !checkPhone()) { alert('数据不合法!') even.preventDefault() } })
具名函数
-
有些情况可以省略function , 比如Vue的methods中 . 若省略, 则看是否有括号, 对象无括号, 方法有括号
-
<script> // 具名函数 function add1(a, b) { return a + b; } let sum = add1(10, 10); alert(sum); </script>
匿名函数
-
有些情况可以省略function
-
<script> //匿名函数 let add2 = function (a, b) { return a + b; } alert(add2(10, 20)); </script>
箭头函数
-
<script> //箭头函数(匿名函数) let add3 = (a, b) => { return a + b; } alert(add3(10, 30)); </script>
立即执行函数
-
<script> //立即执行函数(无需调用,直接执行) ((a, b) => { alert(a + b) })(10, 40) </script>
对象
自定义对象
-
代码示例 : 只有大括号
-
<script> //自定义对象 var user = { name: "Tom", age: 10, gender: "男", sing: function(){ console.log("悠悠的唱着最炫的民族风~"); } } console.log(user.name); user.eat(); <script>
数组
-
定义数组
-
<script> //1. 定义数组 let arr = [1, 2, 3, 4, 5] </script>
-
-
数组属性 - length
-
<script> //2. 数组属性 - length for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }; console.log('========='); </script>
-
-
数组方法 - forEach , map, push , pop , unshift , shift , splice
-
<script> // 遍历数组 arr.forEach((item) => console.log(item)); console.log('========='); //遍历对数组中每一个元素进行修改处理 let newArr = arr.map((item) => { return item + 10 }); newArr.forEach((item) => console.log(item)); console.log('========='); //头部增删 arr.push('a','b'); console.log(arr); arr.pop() console.log(arr); console.log('========='); //尾部增删 arr.unshift('c','d'); console.log(arr); arr.shift() console.log(arr); console.log('========='); //指定位置删除 arr.splice(2,3) console.log(arr); </script>
-
String
-
创建字符串
-
<script> //创建字符串对象 var str = 'Hello String'; console.log(str); </script>
-
-
字符串属性 - length
-
字符串方法 - charAt , indexOf , trim , substring
JSON
-
概述
-
JSON对象:JS 中根据一些特殊的规定, 定义出的对象, 形似与 Java 中的 properties (规定: 当键与值都必须是String类型)
-
规范 :
- 键名必须是字符串 : 注: JS 中定义的普通对象的属性名, 不是字符串, 无需加 ""
- 键名必须用双引号包裹。
- 键名只能包含字母、数字、下划线和连字符,不能包含空格。
- 值可以是以下类型 :
- 字符串、数字、布尔值、对象、数组或
null。 - 不能使用 JavaScript 的
undefined或函数。
- 字符串、数字、布尔值、对象、数组或
- 严格区分大小写:
- 键名和值均区分大小写。
- 键名必须是字符串 : 注: JS 中定义的普通对象的属性名, 不是字符串, 无需加 ""
-
代码示例 (定义json对象)
-
var userStr = '{ "name":"Tom", "age":18, "addr":["北京","上海","西安"] }';
-
-
-
JSON对象与 JS 对象的转换
-
定义 JSON 对象时, 是定义的JSON格式的字符串, 若需要使用, 需要将该JSON格式字符串转为 JS 对象
-
JSON字符串 ==> JS对象
-
let jsObj = JSON.parse(jsonStr);
-
-
JS对象 ==> JSON字符串
-
let jsonStr = JSON.stringify(jsObj)
-
-
BOM
- 概述 : 浏览器对象模型(Browser Object Model),允许JS与浏览器对话,JS将浏览器的各个组成部分封装为对象
- 此类对象API库
- Window:浏览器窗口对象
- 介绍:浏览器窗口对象
- 获取:直接使用window,其中 window. 可以省略。
- 属性
- history : 返回 History 对象
- location : 返回 Location 对象
- 方法
- alert():显示带有一段消息和一个确认按钮的警告框。
- confirm():显示带有一段消息以及确认按钮和取消按钮的对话框。
- setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式。
- setTimeout():在指定的毫秒数后调用函数或计算表达式。
- Location:地址栏对象
- 介绍:地址栏对象。
- 获取:使用 window.location 获取,其中 window. 可以省略。
- 属性
- href:设置或返回完整的URL。
- History:历史记录对象
- Navigator:浏览器对象
- Screen:屏幕对象
- Window:浏览器窗口对象
DOM
-
概念:Document Object Model,文档对象模型.
-
Document对象
-
作用 : 解析HTML, 将网页的内容当做对象来处理. 获取到HTML标签或标签的内容, 然后修改
-
网页中所有内容都封装在document对象中
-
使用方法
- document.querySelector('选择器') : 获取匹配到的第一个元素
- document.querySelectorAll('选择器') : 获取匹配到的所有元素
-
Document对象常用属性
-
innerHTML : 获取标签内容
-
//1. 点击 “改变标题内容” 按钮,需要将div中展示的标题内容替换为 “学员成绩表” document.querySelector('#b1').addEventListener('click', () => { document.querySelector('#tb1').innerHTML = '学员成绩表' }) -
style : 获取css样式
-
//2. 点击 “改变标题颜色” 按钮,需要将div中展示的标题内容以 红色 字体展示(字体保持原有大小, 提示: 操作style属性控制css样式) document.querySelector("#b2").addEventListener("click", () => { document.querySelector('#tb1').style = 'font-size: 30px; color: red'; })
-
-
事件
-
语法
- 标签对象.addEventListener('事件类型', 事件触发执行的函数);
-
<script> //click: 鼠标点击事件 document.querySelector('#b2').addEventListener('click', () => { console.log("我被点击了..."); }) //blur: 失去焦点事件 document.querySelector('#age').addEventListener('blur', () => { console.log("失去焦点..."); }) //input: 用户输入时触发 document.querySelector('#age').addEventListener('input', () => { console.log("用户输入时触发..."); }) //submit: 提交表单事件 document.querySelector('form').addEventListener('submit', () => { alert("表单被提交了..."); }) </script>
模块化
-
将HTML文件中
-
<!-- type="module" : 模块化 --> <script type="module" src="./check.js"> //这里面的代码抽取到了check.js 文件中 </script>
-
-
将项目中需要重复使用的方法抽取到一个 checkFn.js 文件中 , 然后设置该方法导出 (方法头前添加关键字 export)
-
export function checkPhone() { let phoneRegex = /^1[3-9]\d{9}$/; let phoneValue = phone.value; if (!phoneRegex.test(phoneValue)) { document.querySelector('#phone_msg').innerHTML = '错误!' return false; } else { document.querySelector('#phone_msg').innerHTML = '' return true; } }
-
-
将 checkFn.js 引入到 check.js
-
import { checkName as checkUserName, //需要引入的方法名, as 为取别名 checkPhone } from "./checkFn.js";
-