new、原型、继承方式、symbol、闭包内存泄漏处理、判断对象原型归属
## js new 操作发生了什么?
1. 创建一个空对象
2. 改变原型的指向(obj.setprototype(obj,xx.prototype))
3. 改变this指向
~~~js
/*
create函数要接受不定量的参数,第一个参数是构造函数(也就是new操作符的目标函数),其余参数被构造函数使用。
new Create() 是一种js语法糖。我们可以用函数调用的方式模拟实现
*/
function create(Con,...args){
//1、创建一个空的对象
let obj = {}; // let obj = Object.create({});
//2、将空对象的原型prototype指向构造函数的原型
Object.setPrototypeOf(obj,Con.prototype); // obj.__proto__ = Con.prototype
//3、改变构造函数的上下文(this),并将剩余的参数传入
let result = Con.apply(obj,args);
//4、在构造函数有返回值的情况进行判断
return result instanceof Object?result:obj;
}
~~~
## 判断对象原型归属# [s判断对象的属性是原型的还是实例的]
isPrototypeOf、instanceof
## 闭包内存泄漏处理
参考:https://www.kancloud.cn/nfwh/javascript/2265780
javaScript在创建对象时会主动为它分配内存,不再使用时会释放其内存。(垃圾回收器会周期性找出不再使用的变量,然后释放其内存。)
闭包中的设置变量,给个名字,不用了设置为null
## symbol
找到一篇讲symbol的,讲的很好,没想到是奶子脸写的。
https://zhuanlan.zhihu.com/p/22652486
## 原型链继承
https://zhuanlan.zhihu.com/p/356980105
- 一线大厂前端笔试真题解析
- 前
- 1、阿里(29问)
- 2、网易(26问)
- 3、滴滴(28问)
- 4、今日头条17问
- vue常问
- webpack常问
- 其他常问
- vue双向绑定、响应式原理
- js事件循环
- 页面性能优化,打包优化
- vue的diff算法
- url输入流程
- 深拷贝
- new、原型、继承方式、symbol、闭包内存泄漏处理、判断对象原型归属
- 观察者和订阅发布区别
- 封装过哪些hooks
- ele组件二次封装啥的
- 算法常问
- 几种排序
- 二分查找
- 反转二叉树、先中后序遍历、深度/广度遍历
- 数组去重
- 统计一个字符串出现最多的字母
- 斐波那契数列
- 速度创建1-100的数组
- 反转单向链表
- 无重复字符的最长子串
- 一份面试题
- css常问
- 画三角形
- flex
- 实现sticky footer (粘性页脚)