null和undefined的区别
1. 如果有一个操作数是布尔值,则在比较相等之前将其转换为数值————false转换为0,true转换为1;
2. 如果一个操作数是字符串,另一个操作符是数值,则在比较相等之前先将字符串转换为数值;
3. 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较。
面向对象理解
1.JS中的对象就是普通名值对的集合
2.使用对象时,只关心对象提供的功能,不用关注内部细节
3.面向对象的特点
a.封装
b.继承
c. 多态
4.依附于对象的变量叫属性
依附于对象的函数叫方法
5.创建对象的三种方式
a.工厂模式,使用简单的函数创建对象,为对象添加属性和方法,然后返回对象
b.构造函数模式,创建自定义引用类型,可以像创建内置对象实例一样使用new操作符,这种方法的缺点是,构造函数的每个成员都无法复用,每次创建出的对象都只有私有变量和私有方法,不能实现共用
c.原型模式,使用构造函数的prototype属性来指定共享的属性和方法,即使用构造函数定义实例属性,使用原型定义共享的属性和方法
6.继承
JS主要通过原型链实现继承,原型链是通过将一个类型的实例赋值给一个构造函数的原型实现的
模块化理解
模块化就是为了减少系统耦合度,提高高内聚,减少资源循环依赖,增强系统框架设计。
让开发者便于维护,同时也让逻辑相同的部分可复用
模块化开发:针对js、css,以功能或业务为单元组织代码。js方面解决独立作用域、依赖管理、
api暴露、按需加载与执行、安全合并等问题,css方面解决依赖管理、组件内部样式管理等问题。