new操作符做了這些事:
1. 它創建了一個全新的對象
2. 它會被執行[[Prototype]](也就是__proto__)鏈接
3. 它使this指向新創建的對象
4. 通過new創建的每個對象將最終被[[Prototype]]鏈接到這個函數的prototype對象上
5. 如果函數沒有返回對象類型Object(包含Functoin, Array, Date, RegExg, Error),那么new表達式中的函數調用將返回該對象引用
```
//模擬new
function objectFactory() {
const obj = new Object();
const Constructor = [].shift.call(arguments);
obj.__proto__ = Constructor.prototype;
const ret = Constructor.apply(obj, arguments);
return typeof ret === "object" ? ret : obj;
}
```
- 介紹
- 原生JS
- 1.ES6的新特性
- 2.JS的數據類型
- 3.定義函數的方法
- 4.JS作用域的理解
- 5.閉包的理解
- 6.數組去重
- 7.原型及原型鏈
- 8.Object.create的作用
- 9.new的執行過程是怎么回事
- 10.call,apply,bind三者的區別
- 11.實現類的繼承
- 12.談談你對this指向的理解
- 13.DOM
- 14.JS的異步編程
- 15.正則
- http&ajax
- 1.TCP/IP的三次握手和四次揮手
- 2.http常用狀態碼(http-status-code):
- 3.從瀏覽器輸入URL按回車到頁面顯示都發生了什么?
- 4.HTTPS和HTTP的區別
- 5.瀏覽器緩存?
- 6.ajax四步
- 7.一般我們再攔截器中都會寫什么代碼?
- 8.get請求和post請求有什么區別?什么時候使用post?
- 9.Cookie 和 Session 的區別?
- 10.Token 相關
- 11.什么是同源策略?