Day10 学习JavaScript基础

学习JavaScript基础

JavaScript 是一门脚本语言,和java没啥关系

引入的两种方式

  1. 在html的head标签内写<script>写js代码<script>
// 弹窗
<script>
    alert("123");
</script>
  1. 通过创建js文件外部引入,<script src=“js文件的地址”></script>

基本语法入门

  1. 定义变量 var 变量名; / 也可以给初始值 var 变量名 = 初始值 ;
  2. 数据类型:
    - number : 数字,小数和整数都是一样的类型 NaN : 不是一个数字 Infinity:表示无限大
    - 字符串 : “aaa” ‘aaa’
    - 布尔值 : true false
    - 逻辑运算 : && || !
    - 比较运算符:两个等于(类型不一样,值一样,也为true 1==“1”),=== 表示绝对等于(类型和值都一样,才为true)
    - NaN 与任何数据都不等,包括他自己 NaN ===NaN false 需用 isNaN(NaN) 判断
    - Math.abs(1/3-(1-2/3))<0.000001 来判断是否相等 1/3 === (1-2/3) 直接这样为false
    - null 空 undefined 未定义
    - 数组 [] 没有类型限制 [1,1.1,“aa”,null]
    - 对象{key1:value1,key2:value2}
    -
  3. 建议使用严格检查模式 ‘use strict’ – ES6 语法
  4. 建议使用let 定义局部变量 var 定义全局变量

字符串

  1. 多行字符串 字符串
  2. 模板字符串 aaa, ${变量名} 例: asd ${num} sad${a}
  3. 字符串长度 str.length
  4. 字符串不可变
  5. 截取字符串 str.substring(1,4) 包括下标1不包括下标4
    在这里插入图片描述

数组

  1. 数组长度是可变的 可以给arr.length赋值
  2. 可以通过arr[0] 赋值和取值
  3. 长度 arr.length
  4. 通过元素获得下标索引 arr.index0f(元素)
  5. 截取数组 arr.slice(1,6) [1,6)包括下标1不包括下标6
  6. 可以通过push()/unshift() pop()/shift() 赋值取值 push 压入到尾部 unshift压入头部 pop 从尾部弹出 shift 头部弹出
  7. 排序 sort() 升序
  8. 反转 reverse()
  9. 打印拼接数组使用特定字符串连接 str.join("-")

对象

  1. 键都是字符串,值是任意数据类型
  2. 定义对象,都是键值对 var person={firstname:“John”, lastname:“Doe”, id:5566};
  3. 可以动态的删除对象的属性 delete person.id;
  4. 动态的添加:直接给新的属性赋值 person.age = 18;
  5. 判断属性是否存在 “age” in person; true则存在 “toString” in person 也为true 还包括从继承的
  6. 判断自身拥有的属性 person.hasOwnProperty(“age”)

Map

  1. 定义map,也是键值对 :var map = new Map([[“tom”,20],[“lucy”,30]])
  2. 取出map的某个值 var age = map.get(“lucy”);
  3. 设置map的值 map.set(key,value) 如果key存在则添加,否则覆盖
  4. 删除某个键 map.delete(key)

Set

  1. Set 为不重复的值的集合
  2. var set = new Set([1,2,3,4,5,1,2,3,1,2,3]) 结果为[1,2,3,4,5]
  3. 添加 set.add(5);
  4. 删除 set.delete(2)
  5. 是否包含 set.has(3)

遍历

for(let x of map/set/arr){ x }

流程控制

  1. if 判断
  2. while 循环
  3. for 循环
  4. for … in 循环
  5. foreach 需要传入函数

函数

  1. 定义 function 函数名(参数){。。。} 或者 var 函数名 = function(参数){。。。}
  2. JavaScript使用时不限定传入参数个数,函数中可用arguments获取所有参数
  3. 还可以通过 …rest 获取其余参数 function aa(a,b,…rest){…}

变量作用域

1. 在函数体内var 声明一个变量,函数外不能使用
2. 函数中可以使用函数外的变量,如果在函数中定义了与函数外一样的变量,则屏蔽函数外的变量使用函数内的变量
3. JavaScript会自动提升变量到开头,但不会进行赋值
var a = 1 + y;
var y = 2;    
alter(a);    // 不会报错,只是undefine
==============相当于
var y;
var a = 1+y;
y=2;
alter(a); 
  1. 全局对象 window 所有全局变量都在全局对象中,重名会冲突 window.a
  2. 建议自己定义一个全局对象 var myAll = {}
  3. 使用let 定义局部变量
for(var i=0;i<10;i++){}
alter(i) // 10
for(let i=0;i<10;i++){}
alter(i) // 报错  ReferenceError
  1. 常量使用const 定义 const PI = 3.14;

方法

  1. 定义在对象中的函数就是方法
  2. 所有的函数都有apply,也可以实现方法调用
var peo = {
	name:"xxx",
	age:14;
	now:function(){   // 这就是方法
		return new Date();
	}
}
pro.now();   // 使用方法
=================   方式2 
function getNow(){  
		return new Date();
	}
var peo = {
	name:"xxx",
	age:14,
	now:getNow    // 
}
peo.now();   // 使用方法1
getNow.apply(peo,[]) // 使用方法2  函数名(对象名,参数)
  1. Date对象: 创建 var date = new Date();
  2. JSON对象 1. 创建json JSON.stringfy(需要转化为json格式的对象) 2. 解析JSON.parse()
var peo = {
       name:"xxx",
       age:14}
JSON.stringify(peo)   // '{"name":"xxx","age":14}'

var bb = JSON.stringify(peo)   // '{"name":"xxx","age":14}'
JSON.parse(bb)     // {name: "xxx", age: 14}

面向对象编程

  1. JavaScript 有原型链的概念 来实现继承
var M = function (name) { this.name = name; }
var m1 = new M(); //创建对象
var m2 = new M();
m1.__proto__   // M的原型
// 使得m1和m2都可以共有的方法   添加共有方法
m1.__proto__.add = function () { alter("fly"); } 
// 或者
M.prototype.add = function () { alter("fly"); }


m1.add()
m2.add() // 都有结果

M.prototype === m.__proto__  // true  都指向了原型对象 

在这里插入图片描述
2. ES6 可以使用class来定义 使用extends来继承

class Stu{
	constructor(name){
		this.name = name;	
	}
	dt(){alert("1")}
}
// 继承
class nextStu extends Stu{
	constructor(name,age){
		super(name);
		this.age=age;	
	}
	nt(){alert("2")}
}

操作BOM对象

  1. BOM:浏览器对象模型
  2. window对象 : 代表浏览器窗口 有很多方法 window.innerHeight window.innerWidth
  3. navigator 对象 : 封装浏览器的信息
  4. screen对象 : 屏幕信息 screen.height screen.width
  5. location对象: 代表当前页面的URL信息
//刷新网页
location.reload();
// 设置新的地址
location.assign("URL地址");

  1. document : 代表当前页面
// 获取具体的文档树
var d = document.getElementById('d');
// 获取cookie
document.cookie;
  1. history : 浏览器的历史记录 history.back()/forward() 后退/前进

操作DOM对象

  1. DOM:文档对象模型
  2. 浏览器网页就是一个Dom树,可以更新,删除,遍历(得到),添加 Dom节点
  3. 获得节点
var id1 = document.getElementById('id1');  // 根据id获取 DOM节点
document.getElementsByClassName();// 根据class获取 DOM节点
document.getElementsByTagName();// 根据标签获取 DOM节点

father.children[index]  // 根据索引获取子节点
  1. 更新节点
id1.innertext = "1234";   // 修改文本内容
id1.innerHTML = '<em>1234</em>';  //可以解析html代码,进行展示
id1.style.color = 'blue'; // 修改样式
  1. 删除节点 : 先获取父节点再通过父节点删除自己
// 获取父亲节点
var h1 = document.getElementsByTagName('h1');
var father = h1.parentElement();

father.removeChild(h1);
  1. 插入节点
// 追加
list.appendChild(js); // 将已有的js节点加到list节点中

// 添加新的节点
var np = document.createElement('p'); // 新建一个p标签的节点
np.id = 'np';  // 设置id为np
// 通用设置值
np.setAttribute("属性","值");
np.innertext = '123';   // 添加文本内容

// 获取body 标签  是一个数组  要取下标0  
var body = document.getElementsByTagName("body")[0];

操作表单

  1. 得到和修改输入框的值
var user = document.getElementById('user');
user.value; // 得到值
user.value = "abc"; // 修改值

// 单选框,多选框 固定value的值需要通过checked判断
sex_boy.checked    // 选中为true 否则weifalse
// 使用MD5进行加密
https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js

// 可以使用隐藏域提交

JQuery库

  1. 里面有大量javascript函数
  2. 引入 1. 下载jquery包,使用script引入 2. 使用线上的cdn,使用script引入
  3. 使用方式
$("选择器").action(function()); // 选择器和css的写法一样  action 表示事件 function()表示函数
  1. 事件: 鼠标事件 mouseXXX(), 键盘事件 , 其他事件
// 当页面加载完之后写
$(document).ready(function(){
		// 写内容
});
// 简写
$(function(){
    // 写内容
});

还需要学习更多。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值