文章目录
在学习原生的过程中的困惑与解惑的总结
工厂模式
1 | function createPerson(name, age, job) { |
构造函数
1 | function Person(name, age, job) { |
实例的构造函数属性(constructor )指向构造函数。所有的原型对象都会自动获得一个 constructor (构造函数属性)属性
1 | function Person(name, age, job) { |
与工厂模式的区别
- 没有显示创建对象(new 运算符创建并实例化新对象)。
- 直接将属性和方法赋给了 this 对象。
- 没有 return 语句。
- 要创建新实例必须要使用 new 运算符,否者属性和方法将会被添加到 window 对象
- 可以使用 instanceof 操作符检测对象类型。
构造函数的问题:构造函数的内部方法会被重复构建,不同实例内的同名函数是不相等的。
html 页面的渲染过程
当用户请求页面时,浏览器获取 HTML 并构造 DOM。然后获取 CSS 并构造 CSSOM。然后通过匹配 DOM 和 CSSDOM 生成渲染树。如果有任何的 javascript 需要解决,浏览器将不会开始渲染页面,知道 javascript 解决完毕。
事件模型是什么
w3c 中定义的事件发生过程中的 3 个阶段:捕获阶段,目标阶段,冒泡阶段
为什么操作真实 DOM 有性能问题
因为 DOM 是属于渲染引擎中的东西,而 JS 又是 JS 引擎中的东西。当通过 JS 操作 DOM 的时候,其实这个操作涉及到了两个线程之间的通信,那么势必会带来一些性能能上的损耗。操作 DOM 次数一多,也就等同于一直在进行进程之间的通信,并且操作 DOM 可能还会带来重绘回流的情况,所以就导致一些性能上的问题。