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. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请后台提交工单处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请后台提交工单!
【免责声明】:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
【关于转载】:
本站尊重互联网版权体系,本站部分图片、文章大部分转载于互联网、所有内容不代表本站观点、不对文章中的任何观点负责、转载的目的只用于给网民提供信息阅读,无任何商业用途,所有内容版权归原作者所有
如本站(文章、内容、图片、视频)任何资料有侵权,先说声抱歉;麻烦您请联系请后台提交工单,我们会立即删除、维护您的权益。非常感谢您的理解。
【附】:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!
注:本站资源来自网络转载,版权归原作者和公司所有,如果有侵犯到您的权益,请第一时间联系我们处理!
-----------------------------------------------------------------------------------------------------------
【版权声明】:
一、本站致力于为源码爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。
-----------------------------------------------------------------------------------------------------------
源码村资源网 » js培训代码(代码培训学校)
1 评论