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
## 閉包內存泄漏處理
參考:http://www.hmoore.net/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 (粘性頁腳)