1.免费课基础知识
1.页面组成部分
2.js的组成部分(BOM,DOM,ECMA)
3.js引入方式
4.js输出方式
alert(字符串,默认调用toString转为字符串)
console.log/dir
confirm(确定true,取消false)
prompt(有输入框,返回值是你输入的内容)
5.变量
var/function
let/const
命名规范(驼峰命名法;数字大小写字母下划线$但是数字不能作为开头)
数据类型
1.基本数据类型和引用数据类型的区别
number
Number():返回值?数字/NaN
Number("");//0Number(null);//0Number(undefined);//NaNNumber("1px");//NaN
isNaN():返回值?true/false,默认使用的是Number方法转换的
parseInt()
parseInt("");//NaN parseInt(null);//NaN parseInt("1px");//1
parseFloat()
boolean
Boolean()
0,"",NaN,null,undefined是false
! 先转布尔再取反
![],!NaN
!! 转布尔
string
单双引号的问题
var str="I'm a person"
转义
var str='I'm a person';
有length(只读的,不可以修改),有索引
split(指定字符/正则)
replace(指定字符/正则)
slice(n,m)
subStr(n,m)
subString(n,m)
indexOf(字符,index开始查找的索引)
lastIndexOf(字符,index开始查找的索引)
includes(字符,index开始查找的索引)
toUpperCase()
toLowerCase()
match(正则)
search(正则)
concat()拼接
repeat(num)
startsWith()
endsWith()
padStart(length,str)
padEnd(length,str);
解析url问题:var url="https://www.baidu.com/s?wd=马克飞象&rsv_spt=1&rsv_iqid=0xa1571c970005724e&issp=1&f=8&rsv_bp=1&rsv_idx=2";var s=url.split("?")[1];s=s.replace(/=/g,":'").replace(/&/g,"',");eval("({"+s+"'})");回去看一下之前写的几个方法:WEEK2 DAY4 1.正则复习题.html
null,undefined
区别
什么情况会出现 undefined
这俩没有toString方法
null==undefined,跟其他的都不相等
var timer=null;在定义变量的时候暂时不赋值 ,一般会给他一个null
清空一个对象,obj=null
移除DOM0级事件.box.onclick=null;
array
1.length(可以修改的)
2.join(“”)
[1,2,3].join("");//"1,2,3"[1,2,3].toString();//"1,2,3"
3.slice()
4.splice()
5.pop()
6.shift()
7.push()
8.unshift()
9.concat()
10.indexOf()/lastIndexOf()
11.includes()
12.find()/findIndex()
13.filter()
14.forEach()/map()
15.sort()
16.fill()
17.reverse()
18.copyWithIn()
扩展运算符 …
[...ary1,...ary2];var ary=[1,2,3,4]法一eval("Math.max("+ary+")");法二Math.Max.apply(null,ary);法三Math.Max(...ary)
将类数组转为数组
法一function toArray(likeAry){ var ary=[]; for(var i=0;i<likeAry.length;i++){ ary.push(likeAry[i]) } return ary}法二function toArray(likeAry){ return [].slice.call(likeAry); }法三function toArray(likeAry){ return [...likeAry];}法四function toArray(likeAry){ return Array.from(likeAry); }
数组去重
数组方法重写,有回调函数的方法(注意第二个参数是用来改变函数的this的)
对象
键值对组合(属性名只能是字符串,属性名不可以重复)
获取属性值:obj.属性名,obj[“属性名”]
属性名可以实现变量的拼接,用[]包起来
object.tostring方法 “[object Object]”
for in
1.先遍历数字按照从小到大的顺序遍历
2.既可以遍历私有属性也可以遍历公有的属性(你加上的,自带遍历不出来)
Object.is
Object.assign()
函数function
1.定义+执行
2.参数问题
函数的length
默认值问题
实参:arguments
3.arguments
类数组
length 实参的个数
callee 函数本身
4.return
返回值
return后面的代码不执行
5.函数的三种身份
普通函数
new 类 ,prototype
Function类的实例,proto
6.this问题
7.箭头函数
date时间
1.new Date()
getTime()
getFullYear()
getMonth() 0-11
getDay() 0-6
getDate()
……
倒计时当前时间(钟表)
正则
检测数据类型的方法
typeOf
instanceof
construct
Object.toString.call()
Math函数
求最值
绝对值
算数平方根
向上/下取整
随机数
四舍五入
验证码
定时器
1.有个返回值,是个数字表示他是第几个定时器
2.定时器是异步的
3.setInterval(function(){},时间,给前面的函数传参数用的)
逻辑运算符
1.||和&&
2.i++,++i,i—,,—i
循环
for()
for in
for of
while()
continue
break
判断
if else
三元运算符
switch(),三个=判断
数据类型之间的转换
1.==比较
2.===绝对相等
2.正式课内容
1.变量提声(预解释)
什么是变量提声
var /function
let const
块级作用域下 {}
特殊情况
console.log(a);console.log(A);if(![]==false){ //[]==false和![]==false 都是 true console.log(a); console.log(A); var a=1; function A(){};}function fn(){ console.log(f); return f; function f(){};}var f=fn();
2.作用域
全局作用域
私有作用域
内存(堆内存:存储东西的比如因数据类型的存储地址,栈内存:作用域)
私有变量
形参
在私有作用域下声明过的变量
上一级作用域
作用域链
var a=1;function fn(a){ function f(){//f=xxxfff000 console.log(a) } return f;//xxxfff000}var f=fn(++a);//f=xxxfff000f();
作用域销毁机制
全局作用域关闭浏览器才销毁
私有作用域立即销毁:没有返回值,或者返回值没有被占用
不销毁:返回一个引用数据类型的地址被外界占用
function fn(n){ n++;//n=2 return function(m){ m++; console.log(m+n) }}var f=fn(1);f(2);// 5fn(1)(2);//5
this问题
看函数执行的时候前面有没有点
FF.prototype.fn();fn中的this是FF.prototype
给元素绑定事件
box.addEventListener("click",obj.fn,false);obj.fn里面的this就是box
自执行函数 window
函数当做参数的时候 window
window.setInterval(obj.fn,10000);obj.fn中的this仍然是window
构造函数中this是当前实例
箭头函数this问题
jQ对象.each()/$.each(),this==item
JQ原型扩展,jQuary.fn.extend({});this是当前JQ的实例
修改this指向
call
applay
bind
数组的方法(传回调函数的,第二个参数可以修改this)
面向对象(面向类的封装,继承和多态)
单例模式(高级单例模式)
var public=(function (){ return {}})()
工厂模式(了解)
构造函数模式
字面量创建
构造函数创建
自定义的类
new
默认return this
通过this给实例增加私有属性
创建数据类型的方式
原型模式
prototype增加公有属性
_proto _
原型是一个对象,浏览器默认开辟的推内存中有constructor
原型图
原型链
数组原型上方法的实现
call,apply
call(null/undefined/ 不传) this->window
call方法实现的原理
Function.prototype.call=function(){ var ary=[...arguments]; ary.shift(); if(arguments[0]==undefined){ this(...ary); return; } var obj=Object(arguments[0]); obj.__proto__.fn=this; obj.fn(...ary); };
call.call.call…..(fn,obj,x,y,…..)->fn.call(obj,x,y….)
call用途
[].slice.call()Object.toString.call()
apply用途
Math.Max.apply(null,ary)
ajax
new ()
xhr.open(“GET”,url,false)
xhr.onreadyStateChange()
xhr.send()
JSON
JSON.parse
JSON.stringify
括号表达式
保证语法正确
是一个表达式,返回值最后的值(1,2,3)->3
正则(很重要)
创建方式(注意构造函数创建方式可以实现变量的拼接,遇到’’写成 ‘‘)
元字符
特殊意义的元字符
量词元字符
[]
|
修饰符g
test true/false
exec null/[]
返回值是个数组[捕获的内容,内容首字符的索引,元字符串]
一次只能捕获一个,正则没有修饰符g,捕获永远是第一个
加上修饰符g,可以全都捕获出来,但是需要多次捕获,直到结果为null,自己可以写一个while循环
str.match()
懒惰性 ->g
贪婪性 ->在量词元字符后面加一个?
replace(正则,function(){})
分组捕获,不捕获可以在(?:)
正向预查
负向预查
案例(务必要写一遍)
H5表单验证,提交到另一个页面展示内容
JS盒子模型
十三个属性,值是个数字没有单位,浏览默认四舍五入了
clientWidth/clientHeight,clientLeft/clientTop
offsetWidth/offsetHeight offsetLeft/offsetTop offsetParent
scrollWidth/scrollHeight scrollLeft/scroolTop(只有这俩是可修改的)
浏览器的宽高
整个网页的宽高
DOM库
toArray()
toJSONObj()
win()
offset()
prev()
prevAll()
next()
nextAll()
sibiling()
sibilings()
index()
children()
getCss()
setCss()
setGroupCss()
css()
addClass()
removeClass()
hasClass()
toggleClass()
延迟加载(很重要)
原理
try{} catch(e){}
DOM映射
继承(非常重要)
原型继承
call继承
组合继承
动画库(自己再写一下)
JQ
事件(非常重要的)
什么事件
事件行为
事件绑定
DOM0级事件绑定
DOM2级事件绑定
事件对象
事件传播
阻止事件冒泡
阻止浏览器的默认行为
on,off(很重要)
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » js培训代码(代码培训学校)
1 评论