js高级
1.面向对象的理解 面向对象是一种软件编程思想,它与面向过程相对应。讲方法和属性封装在对象中,提高代码的复用性和灵活性。面向对象的俩大特征 封装和继承 封装:讲方法和属性封装在对象中的能力,继承:类给另一个类的方法和属性. 面向对象的基本思想就是把 类和对象 封装 继承来进行程序设计. 2.let var和const 的区别 var存在变量提升 let const不存在变量提升的情况 var没有块级作用域,let和const存在块级作用域 var和let的变量可以被修改,const是常亮不允许被修改 var可以重复声明,let和const在同一作用域下不允许重复声明 3.值类型和引用类型 基本数据类型是值类型 保存与复制指向自己本身 存放在栈中 使用typeof监测数据类型
使用new方法构造对象的是复杂数据类型 保存与复制是this指向的一个指针 存放在堆中 使用instanceof监测数据类型 4.真数组和伪数组的区别 真数组是个arr 伪数组是个obj 伪数组拥有length属性 不具有数组方法 真数组长度可变,伪数组长度不可变 5.原型和原型链 原型:每个函数都有一个prototype 属性这个属性的值是个对象称之为原型 原型链:每个对象都有一个__proto__属性,他的属性指向他的原型对象,原型对象也是个对象,也有__proto__属性指向他的原型对象,这样一层一层的关系链称之为原型链 6.call apply bind的方法 1.call和apply第一个参数都可以修改this的指向 2.call方法除了第二个参数其他参数都可以传递实参给函数 3.apply方法只能传递俩个参数第二个参数通过数组或者伪数组的方式传递个函数 数组里的每一项当做实参传递. 4.bind方法不能调用函数,他会创建一个副本,并绑定函数新的this指向bind返回给新的函数