1.HTML5新增内容有哪些
- 语义化标签(header,footer,nav,article)
- video,audio标签
- 增加了表单元素 从(form,textare,select,button) ----> ( text,password,radio,checkbox,dile,submit,reset )
- 新增cavans echarts就是基于canvas实现的
- 增加了新的api localStorage,seessionStorage,本地储存解决方案
2.es6新特性
- const let
- 箭头函数
- 结构赋值
- 函数参数默认值
- for …of 和 for…in
对于对象来说:
只能用for in
let obj = {
name:"1",
age:"2"
}
for (let item in obj){
console.log(item) // name ; age
}
对于数组来说:
都可以用 for in 是下表 ,for of 是 值
let arr = [ "a","b","c" ]
for (let item in arr ){
console.log(item) // 1 2 3
}
for (let item of arr ){
console.log(item) // a b c
}
- 类
es6中新增加了类
es5中可以使用原型链实现,其实class也是一种语法糖
class 必须有constructor属性,如果你不手动定义,他就会自己定义,constructor就是构造方法
类中的this 指的就是实例化对象
Let与var与const的区别
1.var声明的变量会挂载在window上,而let和const声明的变量不会:
2.var声明变量存在变量提升,let和const不存在变量提升
3.let和const声明形成块作用域
4.同一作用域下let和const不能声明同名变量,而var可以
变量提升
《你不知道你js》讲的很好
var a = 1
在上面这段代码中 其实不是一个直接生命复制的操作
实际会看成两个操作
var a 和 a= 1
- 第一个定义声明是在编译阶段进行的。
- 第二个赋值声明会被留在原地等待执行阶段。
let 和const 存在变量提升吗 存在 但是因为暂存性死区 // 这个复杂了 还没全搞明白
3.数组方法
- push() 从后面添加元素,返回值为添加完后的数组的长度
- arr.pop() 从后面删除元素,只能是一个,返回值是删除的元素
- arr.shift() 从前面删除元素,只能删除一个 返回值是删除的元素
- arr.unshift() 从前面添加元素, 返回值是添加完后的数组的长度
- arr.splice(i,n) 删除从i(索引值)开始之后的那个元素。返回值是删除的元素
- arr.concat() 连接两个数组 返回值为连接后的新数组
- str.split() 将字符串转化为数组
- arr.sort() 将数组进行排序,返回值是排好的数组,默认是按照最左边的数字进行排序,不是按照数字大小排序的
- arr.reverse() 将数组反转,返回值是反转后的数组
- arr.slice(start,end) 切去索引值start到索引值end的数组,不包含end索引的值,返回值是切出来的数组
- arr.forEach(callback) 遍历数组,无return 即使有return,也不会返回任何值,并且会影响原来的数组
- arr.map(callback) 映射数组(遍历数组),有return 返回一个新数组 。
- arr.filter(callback) 过滤数组,返回一个满足要求的数组
- arr.jion() 方法用于把数组中的所有元素放入一个字符串。 类似与java中的to String
4. js常见问题
-
Json如何新增/删除键值对
添加 json [ " wangkun "] = “帅”
删除 delete json["wangkun "] -
什么是面向对象请简述
面向对象是一种编程思想
封装,继承,多态,
比如vue中的观察者模式 就是面向对象的一种 定义了一个新的类 通过 subscriber 手机方法 通过publish发布方法,其实他就是一种面向对象的编程思想,react中的类组件,也是一种面向对象编程的方法 (我觉得) -
普通函数和构造函数的区别
普通函数有具名函数,匿名函数,一般通过传参数调用,
构造函数约定一般用大写具名表达,是对象的模板,通过new关键字构建势力对象,new Array new Object构造函数中的this指的就是实例的实例化对象 promise也是一个构造函数 -
简述,原型,原型链,继承
构造函数和原型,原型链
每个函数都有自己prototype属性 指向它的原型对象,而原型对象的constructor就是他的实例化对象
在一个实例化对象中 你要调取其中的某个属性或者方法 就会先从你的构造函数中的找 如果没有找到 他就会在你的构造函数的原型对象上继续找是不是有这个属性 (引擎会给你找) 如果 还没找到 就是找原型对象的构造函数 如果还没找到就找这个构造函数的原型对象 一直找 一直找 找到window 还找不到 在找不到 就成了undefined
这就是原型链 -
Promise
peomise -
请简述async的用法
async await -
jsonp
概念:一种解决跨域问题的方法(非官方)
工作机制:利用动态创建一个script标签并利用它的src属性向服务器发送一次http请求,并提前声明好一个回调函数,以参数的形式。callback加声明的函数名,后段接受后,会讲返回的callback的值名称,把response数据以js的方式返回回来,前段通过参数接受后段返回的值,这就是jsonp