总结
Js:
Js的基本类型:number,string,boolean,null,undefined,
Typeof:检测数据的类型,instanceof:检测引用数据类型
undefined ==null; // true
1 == true; // true
2 == true; // false
0 == false; // true
0 == ''; // true
NaN == NaN; // false
[] == false; // true
[] == ![]; // true
undefined与null但不全等(===)
当为number与string时,会将string转换为number;
number和boolean时,会将boolean转换为number
number或string与Object,会将Object转换成number或string
Dom元素:
创建节点是: createElement()
创建文本节点:createTextNode()
添加:appendChild()
删除:removeChild()
替换:replaceChild()
插入:replaceChild()
Json:
JSON,全称是 JavaScript Object Notation,即 JavaScript 对象标记法。这是一种 轻量级 (Light-Weight)、 基于文本的 (Text-Based)、 可读的 (Human-Readable)格式。Json.parse()将字符串转换为json格式
Json,stringify()将json格式转换为字符串
普通函数和箭头函数区别:
箭头函数没有自己的this,它的this是其父级函数的this普通函数是有自己的this,他的this是在程序运行时确定的 call,apply,bind的理解
[if !supportLists]1. [endif]相同点:call,apply,bind都可以改变this指向
[if !supportLists]2. [endif]区别:call和apply的传参形式不同, 函数名.call(要改变的对象,参数1,参数2,......) 函数名.apply(要改变的对象,[参数1,参数2,......])bind返回函数本身,但this已经改变了 函数.bind(要改变的对象)(参数1,参数2,......)或函数.bind(要改变的对象,参数1,参数2,......)()
Js数组:
push():向数组尾部添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
pop():删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。
unshift():在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
shift():删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组。
valueOf():返回数组的本身。
indexOf():返回指定元素在数组中出现的位置,如果没有出现则返回-1。
toString():返回数组的字符串形式。
join():以参数作为分隔符,将所有数组成员组成一个字符串返回。如果不提供参数,默认用逗号分隔。
concat():用于多个数组的合并。它将新数组的成员,添加到原数组的尾部,然后返回一个新数组,原数组不变。
reverse():用于颠倒数组中元素的顺序,返回改变后的数组。注意,该方法将改变原数组。
slice():用于截取原数组的一部分,返回一个新数组,原数组不变。
slice(start,end)它的第一个参数为起始位置(从0开始),第二个参数为终止位置(但该位置的元素本身不包括在内)。如果省略第二个参数,则一直返回到原数组的最后一个成员。
splice():删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。
splice(start,delNum,addElement1,addElement2,...)第一个参数是删除的起始位置,第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素。
sort():对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变。
map():对数组的所有成员依次调用一个函数,根据函数结果返回一个新数组。
filter():参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。
Js字符串:
charAt(num) // 得到指定索引位置的单字符
indexOf("str") // 取str第一次出现的索引
lastIndexOf("str") // 取str最后一次出现的索引
replace( "oldStr" , "newStr" ) // 找到oldStr替换为newStr
slice( start , end ) // 其对象可以是字符串or数组 , 记得其范围不包括end
substr( start , length ) // 从索引start开始取length个字符 , length不可小于0否则返回空字符串
什么是闭包?
闭包就是函数外部的变量可以访问函数内部的变量,也具有一定的安全性,尽量少用闭包,因为闭包的会导致内存泄漏。
例:function a(){
var n = 0;
function inc() {
n++;
console.log(n);
}
inc();
inc(); }
a();
深浅拷贝的区别: 浅拷贝是将原始对象中的数据型字段拷贝到新对象中去,将引用型字段的“引用”复制到新对象中去,不把“引用的对象”复制进去,所以原始对象和新对象引用同一对象,新对象中的引用型字段发生变化会导致原始对象中的对应字段也发生变化。
深拷贝是在引用方面不同,深拷贝就是创建一个新的和原始字段的内容相同的字段,是两个一样大的数据段,所以两者的引用是不同的,之后的新对象中的引用型字段发生改变,不会引起原始对象中的字段发生改变。
Promise:
Promise构造函数是解决异步的一个函数,并且传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。
跨域:
跨域指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。 同源就是指,域名,协议,端口均相同。
通过jsonp跨域
跨域的解决方案:JSONP(JSON with Padding:填充式JSON),应用JSON的一种新方法, JSON、JSONP的区别: 1、JSON返回的是一串数据、JSONP返回的是脚本代码(包含一个函数调用) 2、JSONP 只支持get请求、不支持post请求 (类似往页面添加一个script标签,通过src属性去触发对指定地址的请求,故只能是Get请求)
代理: www.baidu.com/index.html需要调用www.sina.com/server.php,可以写一个接口www.baidu.com/server.php,由这个接口在后端去调用www.sina.com/server.php并拿到返回值,然后再返回给index.html
JQ:
JQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。
Jquery事件:
blur()元素失去焦点
focus()元素获得焦点
change()表单元素的值发生变化
click()鼠标单击
dblclick()鼠标双击
mouseover()鼠标进入(进入子元素也触发)
mouseout()鼠标离开(离开子元素也触发)
mouseenter()鼠标进入(进入子元素不触发)
mouseleave()鼠标离开(离开子元素不触发)
hover()同时为mouseenter和mouseleave事件指定处理函数
keydown()按下键盘
keypress()按下键盘
keyup()松开键盘
尺寸相关、滚动事件
1、获取和设置元素的尺寸
width()、height() 获取元素width和height
innerWidth()、innerHeight() 包括padding的width和height outerWidth()、
outerHeight() 包括padding和border的width和height
outerWidth(true)、outerHeight(true) 包括padding和border以及margin的width和height
2、获取元素相对页面的绝对位置
offse()
3、获取可视区高度
$(window).height();
4、获取页面高度
$(document).height();
5、获取页面滚动距离
$(document).scrollTop(); $(document).scrollLeft();
6、页面滚动事件
$(window).scroll(function(){ ...... })
对选择集进行修饰过滤(类似css伪类)
$('#ul1 li:first') //选择id为ul1元素下的第一个li
$('#ul1 li:odd') //选择id为ul1元素下的li的奇数行
$('#ul1 li:eq(2)') //选择id为ul1元素下的第3个li
$('#ul1 li:gt(2)') //选择id为ul1元素下的前三个之后的li
$('#myForm : input') //选择表单中的input元素
$('div:visible') //选择可见的div元素
对选择集进行函数过滤
$('div).has('p'); //选择包含p元素的div元素
$('div').not('.myClass'); //选择class不等于myClass的div元素
$('div').filter('.myClass'); //选择class等于myClass的div元素
$('div').first(); //选择第一个div元素
$('div').eq(5); //选择第六个div元素
选择集转移
$('div').prev('p'); //选择div元素前面的第一个p元素
$('div').next('p'); //选择div元素后面的第一个p元素
$('div').closest('form'); //选择离div最近的那个form父元素
$('div').parent(); //选择div元素的父元素
$('div').children(); //选择div元素的所有子元素
$('div').siblings(); //选择div的同级元素
$('div').find('.myClass'); //选择div内的class等于myClass的元素
微信小程序:
1.注册账号
2.安装开发工具
3.创建项目
4.完成项目上传代码至手机观看效果
微信小程序的项目结构分别是:
1. .Wxml页面文件相当于页面html是页面的结构文件
2.Wxss样式文件相当于css样式的文件,是整个小程序的公共样式。
3. Index.Js是页面的脚本文件,在这个文件中我们可以监听并处理页面的声明周期函数,声明并处理数据,页面交互事件等。
4. app.js是核心文件,app.js是小程序的脚本代码,我们可以在这个文件监听并处理小程序的生命周期,声明全局变量。
5.Json文件,是对整个小程序的全局配置,可以在这个文件中配置小程序由那些页面组成,配置小程序的窗口颜色,导航样式,默认标题等。也是决定页面文件的路劲,设置多tab。
6. Logs页面使用标签来写代码,使用wx:for绑定logs数据。
7. rpx单位是微信小程序的尺寸单位
Vue:
Vue是一个用MVVM的框架,专注于前段视图层。
Vue的生命周期函数:
组件实例化Cteated、beforecreated、
初始化:mount、beforemount、
挂载:updated、beforeupdated、
销毁:destoryed、beforedestoryed
Vuex
Vuex是Vue.js应用程序开发的状态管理模式。Vuex是用来管理组件之间通信的一个插件。
Vuex的核心:
state
=>基本数据 getters =>从基本数据派生的数据 mutations =>提交更改数据的方法,同步! actions
=>像一个装饰器,包裹mutations,使之可以异步。 modules =>模块化Vuex