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;
}
~~~
- 前言
- 工作中的一些記錄
- 破解快手直播間的webSocket的連接
- 快手「反」反爬蟲的研究記錄
- HTML AND CSS
- 遇到的一些還行的css筆試題
- css常見面試題
- JavaScript 深度剖析
- ES6到ESNext新特性
- 關于http與緩存
- 關于頁面性能
- 關于瀏覽器的重排(reflow、layout)與重繪
- 手寫函數節流
- 手寫promise
- 手寫函數防抖
- 手寫圖片懶加載
- 手寫jsonp
- 手寫深拷貝
- 手寫new
- 數據結構和算法
- 前言
- 時間復雜度
- 棧
- 隊列
- 集合
- 字典
- 鏈表
- 樹
- 圖
- 堆
- 排序
- 搜索
- Webpack
- Webpack原理與實踐
- Vue
- Vuejs的Virtual Dom的源碼實現
- minVue
- Vuex實現原理
- 一道關于diff算法的面試題
- Vue2源碼筆記:源碼目錄設計
- vue-router源碼分析(v4.x)
- React及周邊
- 深入理解redux(一步步實現一個 redux)
- React常見面試題匯總
- Taro、小程序等
- TypeScript
- CI/CD
- docker踩坑筆記
- jenkins
- 最后