变量类型
1、typeof能判断哪些类型?
作用:识别所有的值类型,能识别函数,能判断是否引用类型--typeof null-->object
2、何时使用 === 何时使用==?
3、值类型和引用类型的区别?
(1)值类型
在栈中存储,直接存储key和value的值
有哪些?undefined,string , boolean, number, symbol
(2)引用类型
在堆中存储,存储key和value的地址
有哪些?数组[],对象{},null--指向空地址,function
值类型和引用类型分类的原因:这样分类的原因,是为了节省内存,直接赋值在栈中占用空间大。
4、手写深拷贝?
(1)浅拷贝,会更改原始的对象数据。深拷贝,原始的对象不改变
(2)如果不是object和是null的话,不执行深拷贝
(3)注意判断是数组还是对象
(4)递归
5、变量计算--类型转换
(1)字符串拼接
let a = 10+'10' //1010----10+parint('10')=20
(2)==运算符
除了 == null之外,其他一律使用===
if(obj.a ==null){} 相当于if(obj.a === null || obj.a === undefined){}
(3)if语句和逻辑运算符
truely变量: !!a--true的变量
falsely变量:!a--false的变量
以下是falsely变量。除此之外都是truely变量
!!0, !!NaN, !!'', !!null, !!undefined, !!false
(4)逻辑判断
10&&0 //0
''|| ‘abc’ //'abc'
!window.abc //true
原型和原型链
1、如何准确判断一个变量是不是数组?
2、手写一个简易的jQuery,考虑插件和扩展性?
3、class的原型本质,怎么理解?
constructor--构造函数
new class的时候会先执行constructor构造函数内部的属性。
反引号输出方式:姓名$(this.name) , 学号$(this.number)
与 '姓名:' + this.name + ',学号 ' + this.number表达一致
继承:extends
super
例子:
class People{
}
4、类型判断 - instanceof
可以判断引用类型
[] instanceof Array //true
[] instanceof Object //true
{} instanceof Object //true
5、原型
(1)每个class都有显示原型prototype
(2)每个实例都有隐式原型proto
(3)实例的proto指向class的protoype
执行规则:先在自身属性或方法寻找,如果找不到则自动去proto中寻找
6、原型链