JavaScript基础(快速回忆版)
JavaScript基础(快速回忆版)
1.对象:
对象的定义:
对象是若干键值对(属性之间使用逗号隔开,最后一个属性不加逗号)
JavaScript中的所有的键都是字符串,值是任意对象
取对象的值
person.name
>lyl
person.age
>12
通过delete删除对象的属性
person.name
"lyl"
delete person.name
true
person
{age: 21, number: 123456}
2.严格检查模式
建议启用严格检查模式,
在javaScript代码块第一行中加入'use strict'
3.字符串
多行字符串编写
//多行字符串编写(使用反引号``)
var mes=
`hello
你好
我是望穿先生!`
模板字符串
//模板字符串
let name='lyl';
let age=21;
let massage=`你好啊,${name}`
字符串的可变性
字符串不可变
4.数组
Array可以包含任意的数据类型
//数组可以包含任意数据类型
var arr=[1,2,3,'lyl',13.8]
通过arr.length获取长度
注意:假如给arr.length赋值,数组的大小就会发生变化,如果赋值过小,元素就回丢失
slice()方法:
slice( )截取Array的一部分,返回一个新的数组,类似于String中的substring
push()和pop()方法:
push:将元素压入到尾部
pop:弹出尾部的一个元素
unshift()和shift()方法:
unshift:将元素压入到头部
shift: 弹出头部的一个元素
join()方法:
打印拼接数组,使用特定的字符串连接
var arr=[1,2,3,4,5]
undefined
arr.join('-')
"1-2-3-4-5"
concat()方法:
实现数组的拼接
>var arr2=['k','l']
>undefined
>arr.concat(arr2)
>[1, 2, 3, 4, 5, "k", "l"]
5.分支和循环
循环:
foreach()
var age=[12,23,34,45,21,22]
//foreach()里是函数
age.foreach(function(value)){
console.log(value)
}
for...in 遍历出索引下标
//遍历出来的是数组的索引
for(var num in age){
if(age.hasOwnProperty(num)){
console.log("存在")
console.log(age[num])
}
}
6. Map和Set
Map:
//Map
var map=new Map([['lyl',99],['kkk',89]]);
var score =map.get('kkk') //通过键获取值
console.log(score)
Set:无序不重复的集合
var set=new Set([1,2,3,4,1,1,1]);
console.log(set)
>
0: 1
1: 2
2: 3
3: 4
7. iterator
通过for of遍历值
//for of遍历值
var arr=[3,4,5]
for(var x of arr){
console.log(x)
}
8.函数
8.1定义函数
定义方式1:
一旦执行到return代表函数返回,返回结果。
定义方式2:
//定义方式2
var abs=function (x){
if(x>=0){
return x;
}else{
return -x;
}
}
假设不存在参数,如何规避(需要手动抛出参数)
function abs(x){
//手动抛出异常
if(typeof x!='number'){
throw 'Not a number'
}
if(x>=0){
return x;
}else{
return -x;
}
}
8.2 arguments关键字
代表传进来的所有参数是一个数组
var abs=function (x){
for (var i=0;i=0){
return x;
}else{
return -x;
}
}
8.3 rest关键字
arguments包含所有的参数,我们有时候想要使用多余的参数类进行附加操作,需要排除已有的参数
rest是 ES 6 引入的新特性,可以获取除了已经定义的参数之外的所有参数
注:rest参数只能写在最后面,必须用...标识
function lyl(a,b,...rest){
console.log(rest); //输出除了a,b这两个参数以后的所有参数
}
9. 变量的作用域
var 定义的变量有作用域‘
变量在函数内有效,内部函数可以访问外部函数的成员,反之则不行
全局对象window
var a='全局变量';
alert(a);
alert(window.a) //默认的所有全局变量,都会自动绑定在window对象下
规范:
由于我们所有的全局变量都会绑定到我们的window对象上,如果不同的js文件,使用了相同的全局变量,如何才能减少冲突?
把自己的代码全部放入自己定义的唯一命名空间中,降低全局命名冲突的问题
//单一全局变量
var lyl={};
//定义全局变量
lyl.name="望穿先生";
lyl.add=function (a,b){
return a+b;
}
建议使用let关键字 定义局部变量
解决局部作用域冲突的问题
常量关键字 const
const PI="3.14" //定义常量
console.log(PI);
PI="1234"; //常量不可被修改,此时会报类型错误
10.方法
方法就是把函数放在对象的里面,对象只有两个东西:属性和方法
var lyl={
name:"望穿先生",
birth:2000,
//方法
age:function (){
var now = new Date().getFullYear();
return now-this.birth;
}
//调用方法一定要带()
lyl.age()
apply(在js中可以控制this指向)
function getAge(){
var now = new Date().getFullYear();
return now-this.birth;
}
var lyl={
name:"望穿先生",
birth:2000,
age:getAge()
}
getAge().apply(lyl,[]); //this,只指向了lyl,参数为空
11.内部对象
11.1 Date对象
let date = new Date();
date.getFullYear(); //年
date.getMonth(); //月
date.getDate(); //日
date.getDay(); //星期
date.getHours(); //时
date.getMinutes(); //分
date.getSeconds(); //秒
date.getTime(); //时间戳,从1970年 1.1 00.00到现在的时间戳
// 通过时间戳返回正确格式的时间
// console.log(new Date(1646962666507))
// VM194:1 Fri Mar 11 2022 09:37:46 GMT+0800 (中国标准时间)
转换
date = new Date(1646962666507)
date.toLocalestring() //将时间戳转换为当前时间
11.2 JSON对象
Json是什么
-
JSON(JS对象简谱)是一种轻量级的数据交换格式
-
简洁和清晰的层次结构使得JSON成为理想的数据交换语言
-
易于人阅读和编写,同时也有易于机器解析和生成,并有效提升网络传输效率
在JavaScript一切皆为对象,任何js支持的类型都可以Json来表示
格式:
- 对象都用{}
- 数组都用[]
- 所有的键值对 都使用key:value
var user={
name:"lyl",
age:21,
sex:"男"
}
//将对象转化为json字符串
let jsonuser=JSON.stringify(user)
//字符串转化为对象,参数必须是JSON字符串
let obj=JSON.parse('{"name":"lyl","age":21,"sex":"男"}')
//JSON.parse('{"name":"lyl","age":21,"sex":"男"}')
//{name: "lyl", age: 21, sex: "男"}
注意:json和js对象的区别
let obj={a:'hello',b:'你好'}
let json='{"a":"hello","b":"你好"}'
12.面向对象编程
类似于java中的继承,javaScript中有原型继承
let Student={
name:"lyl",
age:21,
run:function (){
console.log(this.name+"run...")
}
}
let mike={
name:"望穿先生",
age:22,
}
//mike的原型指向Student,使得mike也可以执行run方法
mike.__proto__ =Student;
class
class关键字,是在ES6引入的
定义一个类,属性,方法
//定义一个学生类
class Student{
//构造器
constructor(name) {
this.name=name;
}
hello(){
alert("你好啊");
}
}
let mike=new Student();
mike.hello();
继承
//继承
class xiao extends Student{
constructor(name,grade) {
super(name);
this.grade=grade;
}
MyGrade(){
alert("我的成绩是100");
}
}
let linda=new xiao("linda",20);
原型链
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iuTodVua-1647138157554)(C:\Users\28905\AppData\Roaming\Typora\typora-user-images\image-20220311110429788.png)]](https://img.yipin100.com/p.php?img=https://img-blog.csdnimg.cn/8cf808f7e7b9460f9954bbf90b480cb4.png)
13.操作BOM对象(重点)
JavaScript和浏览器的关系:
JavaScript诞生就是为了能够让他在浏览器中运行
BOM:浏览器对象模型
- IE 6-11
- Chrome
- Safari
- FireFox
window对象
window代表浏览器窗口
window.innerHeight //窗口内部高度
window.innerWidth //窗口内部宽度
Navigator对象
Navigator,封装了浏览器的信息
大多数时候,我们不会使用navigator对象,因为会被人修改,所以不建议使用这些属性来判断和编写代码
navigator.appName //浏览器名字
navigator.appVersion //版本
Screen对象
代表屏幕
screen.width
screen.height
location对象(重要)
location代表当前页面的URL信息
//设置新的地址
location.assign('https://cnsblog.wangchaunxiansheng.com')
Document对象
document代表当前的页面,HTML,DOM(文档树)
获取cookie
doucument.cookie
服务器端可以设置cookie:httpOnly
history对象
history代表浏览器的历史记录
history.back() //返回
history.forward() //前进
14.操作DOM对象
DOM文档对象模型
核心:
浏览器网页就是一个DOM树形结构!
- 更新:更新DOM节点
- 遍历DOM结点:得到DOM节点
- 删除:删除一个DOM节点
- 添加:添加一个新的节点
获得DOM节点:
(这是原生代码,之后我们尽量都是用jQuery)
我是h1
我是p1
我是p2
更新DOM节点:
操作文本:
- lyl.innerText="你好" 修改文本的值
- lyl.innerHTML='你好 ' 可以解析HTML文本标签
操作js
- lyl.style.color="red" 将文本颜色修改为红色
删除DOM节点:
删除节点的步骤:先获取父节点,在通过父节点删除自己
p1
插入DOM节点:
我们获得了某个DOM节点,假设这个DOM节点是空的,我们通过innerTHML就可以增加一个元素了,但是这个DOM结点已经存在元素了,我们再增加元素就会产生覆盖。
追加元素
外部p标签
JavaSE
JavaEE
JavaME
创建元素
JavaSE
JavaEE
JavaME
通过setAttribute()为新创建的节点设置属性
JavaSE
JavaEE
JavaME
15.操作表单(验证)
得到表单输入框的内容
得到表单,单选框的值
MD5加密的提交表单(注意onsubmit的return)
md5加密
效果:
此时的password已经被MD5加密

16. jQuery
jQuery库,里面存在大量的javascript函数
获取jQuery
CDN引入或者下载引入
//jQuery公式 选择器+shijian
$(selector).action()
简单实例:
jquery
选择器:
css的选择器全部都可以用
参考文档:http://jquery.cuishifeng.cn/
事件:
鼠标事件,键盘事件,其他事件
简单实例(移动鼠标显示位置):
jquery事件
mouse :
在此处移动鼠标
操作DOM
- JavaScript
- Python